摘要: 题目连接 :http://poj.org/problem?id=2524题目大意。已知有n个大学生,其中有m对宗教信仰相同的学生,请你估算这n个学生中最多有多少种宗教信仰。不多说直接上代码~View Code #include<stdio.h>int set[50005];int find(int x){ int r = x; while(set[r] != r) { r = set[r]; } return r;}void merge(int a,int b){ a = find(a); b = find(b); if(a == ... 阅读全文
posted @ 2012-07-17 14:13 某某。 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1272本人若菜,最近做题的时候遇见了这个所以才开始接触并查集。用并查集来检查连通性也就是检查最小生成树。最小生成树的点减去边的差值为一,且在同一个集合内。因此,判断条件有二:一没有产生回路,二点数减去边数为1;可以得到如下代码我们用t来储存点数与边数之差,当产生一条非回路的时候t--,出现一个点t++;while(scanf("%d %d",&a,&b)&&a||b) { if(merge(a,b) == 0)//是已经一个属于同一个集合,也就是说 阅读全文
posted @ 2012-07-17 11:30 某某。 阅读(426) 评论(0) 推荐(0) 编辑