HDU - 1232 畅通工程
注意:两个城市之间可以有多条道路相通,也就是说
3 3
1 2
1 2
2 1
这种输入也是合法的
当N为0时,输入结束,该用例不被处理。
#include<stdio.h>
int p[]; //用于描述没个数的上一级,保存当前坐标的上一级,上司
int find(int x)//用于查找 x 的老大,掌门人
{
int r=x,t,i,j;
while(p[r]!=r) //最后r即使x的老大
r=p[r];
t=x;
while(p[t]!=r) //这是利用已知的老大的坐标,压缩路径,将老大所有的手下的的手下的手下.....全部归到只是老大的下一级,为了方便各个小弟查询老大
{
i=p[t];
p[t]=r;
t=i;
}
return r;//返回老大的坐标
} int he(int x,int y)//用于将两个集合合并在一起
{
if(find(x)!=find(y))//查询两个数的老大,如果不同老大,将x的老大变成y的老大
{
p[find(y)]=p[find(x)];
return ; //返回1用于题目计算需要建的路(打架的次数)
}
return ;
} int main()
{
int n,m,x,y,i;
while(~scanf("%d%d",&n,&m)&&n)
{
int s=n-;//开始若有n个点,则需要修建n-1条路(打n-1次架)
for(i=;i<=n;i++)//初始化,把所有点都初始化成自己是自己的老大,自成一派
p[i]=i;
for(i=;i<=m;i++)
{
scanf("%d%d",&x,&y);
if(he(x,y)==)s--;//返回1 则表示两个不同小弟是不同的老大,打了一架后,则需要打s-1次架。
}
/*
43 计算s还可以用,此时每个门派(集合)都归纳好了,开始看看有多少个不同的集合,即看看有多少个不同的老大,根据有多少个老大,这是
44 在开始看看要打多少次架(帮派间的斗争!!)有n个老大就要打n-1次架 (有n个集合就要n-1次修路)
45 可以用一个数组存储根,在查询有多少个根!
46
47 */
printf("%d\n",s);
}
}
自己敲一遍
#include<cstdio>
#include<algorithm> using namespace std; int p[]; int Find(int x)
{
int r = x, t, i; while(p[r] != r)
r = p[r]; t = x; while(p[t] != r)
{
i = p[t];
p[t] = r;
t = i;
} return r;
} int QQ(int x, int y)
{
if (Find(x) != Find(y))
{
p[Find(y)] = p[Find(x)];
return ;
}
return ;
} int main()
{
int n; while (scanf ("%d", &n), n != )
{
int i, m, num = n-; for (i = ; i <= n; i++)
p[i] = i; scanf ("%d", &m); int x, y; for (i = ; i < m ;i++)
{
scanf ("%d %d", &x, &y);
if (QQ(x, y) == )
num--; }
printf ("%d\n", num);
}
return ;
}
HDU - 1232 畅通工程的更多相关文章
- HDU 1232 畅通工程(道路连接)(裸并查集)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1232 畅通工程 Time Limit: 4000/2000 MS (Java/Others) ...
- hdu 1232 畅通工程(并查集算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1232 畅通工程 Time Limit: 4000/2000 MS (Java/Others) M ...
- HDU 1232(畅通工程)题解
以防万一,题目原文和链接均附在文末.那么先是题目分析: [一句话题意] 给定一具有N个节点的图和其边集,求其集合数量. [题目分析] 并查集经典题...其实就是创建好并查集就行了.. [算法流程] 于 ...
- HDU 1232 畅通工程(模板——并查集)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1232 Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出 ...
- HDU 1232 畅通工程(并查集)
畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem Des ...
- hdu 1232畅通工程
Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都可以实现交通 ...
- HDU 1232 畅通工程(最小生成树+并查集)
畅通工程 Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submissi ...
- HDU 1232 畅通工程 (并查集)
某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可). ...
- hdu 1232:畅通工程(数据结构,树,并查集)
畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
随机推荐
- 1.1 Quartz 2D 绘图
本文并非最终版本,如有更新或更正会第一时间置顶,联系方式详见文末 如果觉得本文内容过长,请前往本人 “简书” Quartz2D 绘图主要步骤: 1. 获取[图形上下文]对象 —— (拿到草稿纸 ...
- 谓词 (NSPredicate)使用详情
谓词 更加详细:http://blog.csdn.net/ztp800201/article/details/8116081 //判断是否满足条件 第一种 判断一个数组(array)中满足条件的 NS ...
- android4.4源码下载简介
1. $sudo apt-get install git-core curl2. mkdir ~/bin PATH=~/bin:$PATH3. curl http://commondatastorag ...
- [IOS初学]ios 第一篇 storyboard 与viewcontroller的关系
学习了一下ios,把一个基本的概念搞清楚了,在android或者wp中,大家基本都是习惯与一个画面场景代表一个类,新建场景的时候自动新建了类,但在ios中使用了storyboard之后发现,在stor ...
- DS实验题 融合软泥怪-2 Heap实现
题目和STL实现:DS实验题 融合软泥怪-1 用堆实现优先队列 引言和堆的介绍摘自:Priority Queue(Heaps)--优先队列(堆) 引言: 优先队列是一个至少能够提供插入(Insert) ...
- SDK Manager.exe闪退
运行tools文件下android.bat. 修改tools文件下android.bat文件,再运行SDK Manager.exe
- mysql导入大文件sql
备份mysqldump mysqldump -u root -p ao2012 > /mnt/www/zq_ao2012/backup.sql 然后数据库密码 导入 mysql -h local ...
- iOS,一行代码进行RSA、DES 、AES、MD5加密、解密
本文为投稿文章,作者:Flying_Einstein(简书) 加密的Demo,欢迎下载 JAVA端的加密解密,读者可以看我同事的这篇文章:http://www.jianshu.com/p/98569e ...
- 79. Word Search
使用的别人的思路,用一个二维数组记录每一个位置是否用过,然后通过递归来判断每一个位置是否符合 public class Solution { public boolean exist(char[][] ...
- iOS 面试题(四):block 什么时候需要构造循环引用 --转自唐巧
问题 有没有这样一个需求场景,block 会产生循环引用,但是业务又需要你不能使用 weak self? 如果有,请举一个例子并且解释这种情况下如何解决循环引用问题. 答案 需要不使用 weak se ...