概述
Union后最后处理跟为0即可
#include <stdio.h>
#define MAX_LENGTH 30005
struct Union {
int to;
int rank;
};
Union Unions[MAX_LENGTH];
void init_QucikUnion(int length){
for (int i = 0;i<=length;i++){
Unions[i].to = i;
Unions[i].rank = 0;
}
}
int Find(int n){
while (Unions[n].to != n)
n = Unions[n].to ;
return n;
}
void Union(int i,int j){
i = Find(i);
j = Find(j);
if (Unions[i].rank > Unions[j].rank) {
Unions[j].to = i;
} else {
Unions[i].to = j;
if (Unions[i].rank == Unions[j].rank) Unions[j].rank++;
}
}
int main()
{
int N,M;
while (scanf("%d%d",&N,&M) != EOF && (N != 0 || M != 0)){
init_QucikUnion(N);
Unions[0].rank = 30005;
for (int i = 0;i<M;i++){
int NS;
scanf("%d",&NS);
int numbers[30005];
for (int j = 0;j<NS;j++){
scanf("%d",&numbers[j]);
}
for (int k = 1;k<NS;k++){
Union(numbers[k-1],numbers[k]);
}
}
int suspects = 1;
for (int i = 1;i<N;i++)
if (Find(i) == 0)
suspects++;
printf("%dn",suspects++);
}
return 0;
}
最后
以上就是舒适小鸽子为你收集整理的The Suspects POJ - 1611的全部内容,希望文章能够帮你解决The Suspects POJ - 1611所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复