1107. Social Clusters (30) PAT甲级
2017-02-10 18:42
495 查看
传送门
#include<stdio.h> #include<algorithm> using namespace std; #define MAX_N 1100 int set[MAX_N]; int n; int course[MAX_N]; int root[MAX_N]; int find(int x){ int r=x; while(set[r]!=r){ r=set[r]; } return r; } int merge(int x,int y){ int fx,fy; fx=find(x); fy=find(y); if(fx==fy) return 0; else{ set[fx]=fy; } } void init(){ for(int i=1;i<=n;i++){ set[i]=i; } } bool cmp(int a,int b){ return a>b; } int main(){ scanf("%d",&n); init(); int count=0; int k; for(int i=1;i<=n;i++){ scanf("%d:",&k); int h; for(int j=0;j<k;j++){ scanf("%d",&h); if(course[h]==0) course[h]=i; merge(i,find(course[h])); } } for(int i=1;i<=n;i++){ root[find(i)]++; } for(int i=1;i<=n;i++){ if(root[i]!=0) count++; } printf("%d\n",count); sort(root+1,root+n+1,cmp); for(int i=1;i<=count;i++){ printf("%d",root[i]); if(i!=count) printf(" "); } }
相关文章推荐
- 1045. Favorite Color Stripe (30)-PAT甲级真题
- PAT甲级 1115. Counting Nodes in a BST (30)
- PAT甲级 1139. First Contact (30)
- PAT 甲级 1018. Public Bike Management (30)
- PAT甲级1030. Travel Plan (30)
- PAT甲级练习题A1018. Public Bike Management (30)
- pat甲级1026. Table Tennis (30)
- PAT甲级练习题A1022. Digital Library (30)
- PAT 甲级 1107. Social Clusters (30)
- PAT 1131. Subway Map (30) -甲级
- PAT 甲级 1123. Is It a Complete AVL Tree (30)
- 【PAT甲级】1004. Counting Leaves (30)
- PAT - 甲级 - 1022. Digital Library (30)(STL-map,set)
- PAT - 甲级 - 1107. Social Clusters (30) (并查集)
- 1014. Waiting in Line (30)-PAT甲级真题(queue的应用)
- PAT(甲级)1014. Waiting in Line (30)
- [PAT甲级]1004. Counting Leaves (30)(求树各层非叶子节点数目)
- PAT甲级 1139. First Contact (30)
- PAT 甲级 1022. Digital Library (30)
- 1004. Counting Leaves (30)-PAT甲级真题(bfs,dfs,树的遍历,层序遍历)