本文主要是介绍More is betterThe Suspects,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这两道题非常相似,都是计算一个联通中所有节点的个数,只需要在find中加个计算就可以了
#include<stdio.h>
int parent[10000005];
int num[10000005];
int find(int x){if(x != parent[x])parent[x] = find(parent[x]);return parent[x];
}
void Merge(int a,int b){int c = find(a);int d = find(b);if(c != d){parent[c] = d;num[d] += num[c];}
}
int main(){int n,count,max1 = 0;int A,B;while(~scanf("%d",&n)){if(n == 0)printf("1\n");else{for(int i = 1 ; i <= 10000005 ; i++){parent[i] = i;num[i] = 1;}for(int i = 1 ; i <= n ; i++){scanf("%d %d",&A,&B);Merge(A,B);if(A > max1)max1 = A;if(B > max1)max1 = B;}//printf("%d\n",max1);int max = 0;for(int i = 1 ; i <= max1 ; i++){if(num[i] > max){max = num[i];}}printf("%d\n",max); }}return 0;
}
这篇关于More is betterThe Suspects的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!