技术标签: 并查集
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1232
并查集详见http://blog.csdn.net/qq_29606781/article/details/47439437
#include<stdio.h>
int per[10100];
void init(int N)
{
int i;
for(i=1;i<=N;++i)
{
per[i]=i;
}
}
int find(int x)//根节点
{
int t=x;
while(per[t]!=t)
{
t=per[t];//更新节点
}
int r=t;//到根节点,注意节点r的父节点也是r
int i=x,j;
while(i!=r) //路径压缩
{
j=per[i]; //把下一个节点保存一下 ,也就是当前节点的父节点
per[i]=r;//把当前这个节点的父节点赋值为根节点
i=j;//更新节点
}
return r;//返回根节点
}
void join(int x,int y)//合并两个节点
{
int fx=find(x);
int fy=find(y);
if(fx!=fy)//如果x,y的根节点不同
{
per[fx]=fy;//把两个根节点连接
//至于哪个和哪个节点连接,看深度,可以开个数组,把深度小的连到深度大的
//这是一种优化方式,数据大的时候可以用
}
}
int main()
{
int n,m,i,x,y,cnt;
while(scanf("%d",&n),n)
{
cnt=0;
init(n);//初始化
scanf("%d",&m);
while(m--)
{
scanf("%d%d",&x,&y);
join(x,y);
}
for(i=1;i<=n;++i)
{
if(per[i]==i)
{
++cnt;//到根节点的个数,即有几个集合
}
}
printf("%d\n",cnt-1);
}
return 0;
}
//递归压缩路径, 有高度优化
//时间:31
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <queue>
#define maxn 1100
#define INF 0x3f3f3f3f
using namespace std;
int per[1100];
int ran[1100]; //ran:深度
int n, m;
void init(){
for(int i = 1; i <= n; ++i){
per[i] = i;
ran[i] = 0;
}
}
int find (int x){
if(x == per[x])
return x;
return per[x] = find(per[x]);
}
void jion (int x, int y){
int fx = find(x);
int fy = find(y);
if(fx == fy)
return ;
if(ran[fx] < ran[fy])//将深度小的树合并到深度大的数假设两棵树的深度分别是h1,h2
per[fx] = fy;//则合并后的数的高度h:max(h1,h2),if h1<>h2
else{ //h1+h2,if h1=h2
per[fy] = fx;
if(ran[fx] == ran[fy]) ran[fx]++;
}
}
int main (){
while(scanf("%d", &n),n){
scanf("%d", &m);
init();
int a, b;
while(m--){
scanf("%d%d", &a, &b);
jion(a,b);
}
int ans = 0;
for(int i = 1; i <= n; ++i){
if(per[i] == i)
ans++;
}
printf("%d\n", ans - 1);
}
return 0;
}
文章浏览阅读1.4k次。Cisc由于指令功能复杂,规整性不好,不利于采用流水线技术来提升性能。Risc指令集,指令相对规整,功能简单,适合采用流水线技术来提高性能。
文章浏览阅读707次,点赞9次,收藏25次。博主介绍:全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战精彩专栏 推荐订阅2023-2024年最值得选的微信小程序毕业设计选题大全:100个热门选题推荐2023-2024年最值得选的Java毕业设计选题大全:500个热门选题推荐Java精品实战案例《500套》微信小程序项目精品案例《500套》文末获取源码+数据库。
文章浏览阅读1.7k次。爬虫,即网络爬虫。打个形象的比方:一只蜘蛛在蜘蛛网上爬,可以以某种方式从网上的某个地方找到自己想要的东西。那么和网页相联系起来有什么关系呢?首先我们先简单介绍一下网页的基本概念。所谓网页,也就是我们给浏览器输出一个字符串,浏览器进行解析后,经DNS服务器找到服务器主机后,向服务器发出请求,服务器经过解析之后,向浏览器发送Html、JS、CSS等文件,再由浏览器进行解析,组成了平时我们所见的_先我们先简单介绍一下网页的基本概念。所谓网页,也就是我们给浏览器输出一个字符
文章浏览阅读926次。1、根据文件路径获取文件,并将PDF文件的每一页转换为一个图片。其中要将图片转为base64格式的。/** * <p>Description PDF文件转成图片</p> * @author wumf * @date 2020年1月20日 上午11:00:47 * @param PdfFilePath PDF文件路径 * @..._itxt7 pdf 转图片
文章浏览阅读3.5k次,点赞3次,收藏9次。前提是需要做完跑马灯实验最终成果--长按,LED0亮/灭,短按LED1亮/灭。短按长按main函数#include "led.h"#include "key.h"#include "stm32f10x.h"#include "delay.h"#include "usart.h" int main(void) { delay_init(); //延时函数初始化 LED_Init(); //初始化LED KEY_Init();._stmf103c6t6按键
文章浏览阅读6.1k次,点赞19次,收藏57次。Linux 进程家族数 生成三个子进程不生成孙子进程1. 要求2. 分析2.1 getpid、getppid2.2 不让子进程再生成进程3. 代码3. 运行截图4. 绘制进程家族树1. 要求如果父进程需要创建3 子进程,但不创建孙子进程。请编写程序,并画出进程家族树。 (进程家庭树中填写进程 PID,使用 getpid, getppid)。2. 分析2.1 getpid、getppidg......_父进程需要创建三个子进程
文章浏览阅读513次。处女作发表 记得在读初中的时候,语文老师说他的第一篇文章发表的时候,他特得意,感觉非常好,自己的文字总算变成了“铅字”(注:那时候用铅打印出版,便是铅字),同时也希望我们也有那么一天把自己的想法变成“铅字”,还真羡慕自己也有那么一天能够实现。虽然自己已是研究生,可惜本人不才,一直没有作品变成“铅字”,很多的老师都有自己的学术作品发表,特别是我们用自己老师编写的书籍当作大学教材,心里还是很羡慕那些才华出众的老师。机会还是来了。自参加nios比赛以来,我们一直在努力,
文章浏览阅读10w+次,点赞27次,收藏94次。前言百度的验证码又双叒更新了。当然出于好奇,猫又拿起了键盘开始挑战。正文来了。先来看看继上次破解百度旋转验证码后,百度的大佬又做出了哪些改变。1.抓取图片时加上了马赛克2.增加了图片库抓取图片时加上了马赛克截图是这个亚子的后台拿到的却是这个亚子的哦呦,这个马赛克有点东西的呀~图片抓下来都不一样还咋识别,百度这里也是煞费苦心,给您点个赞。不过话说回来,就算这样也难不住我们的呀,这里我思考了一下还有几种方式来获取这个图片:1 .通过系统级鼠标来获取2 .通过网_selenium 百度旋转图片验证
文章浏览阅读815次,点赞9次,收藏20次。人工智能是如何工作的
文章浏览阅读205次。结果表明,我们的仿真模型能够有效实现最大功率追踪和控制,并且输出波形质量好,THD小于5%。这些结果表明,我们的仿真模型能够满足实际应用的需要,并具有很高的可靠性和实用性。通过电导增量法实现最大功率追踪和dq坐标系解耦实现控制,并通过Simulink仿真得到了良好的仿真结果。本文将探讨三相光伏并网逆变器的仿真研究,通过电导增量法实现最大功率追踪,同时在dq坐标系下解耦实现控制,输出波形质量好,THD小于5%。在本文中,我们将详细介绍仿真的实现步骤和结果分析,并对仿真结果进行深入的探究和分析。_三相光伏发电并网的boost电路
文章浏览阅读109次。加载NX角色_nx1953加载角色
文章浏览阅读204次,点赞3次,收藏6次。robotframework入门-定位元素位置后滚动页面使元素可见