PAT a1107题解
来源:互联网 发布:永宏编程手册 编辑:程序博客网 时间:2024/06/09 15:05
#include <cstdio>#include <algorithm>using namespace std;const int N = 1010;int father[N];int isRoot[N] = {0};int course[N] = {0};int findFather(int x){int a = x;while(x != father[x]){x = father[x];}while(a != father[a]){int z = a;a = father[a];father[z] = x;}return x;} void Union(int a, int b){int faA = findFather(a);int faB = findFather(b);if(faA != faB){father[faA] = faB;} }void init(int n){for(int i = 1; i <= n; i++){father[i] = i;isRoot[i] = false;}}bool cmp(int a, int b){return a > b;}int main(){int n, k, h;scanf("%d", &n);init(n);for(int i = 1; i <= n; i++){scanf("%d:", &k);for(int j = 0; j < k; j++){scanf("%d", &h);if(course[h] == 0){course[h] = i;}Union(i, findFather(course[h]));}}for(int i = 1; i <= n; i++){isRoot[findFather(i)]++;}int ans = 0;for(int i = 1; i <= n; i++){if(isRoot[i] != 0){ans++;}}printf("%d\n", ans);sort(isRoot + 1, isRoot + n + 1, cmp);for(int i = 1; i <= ans; i++){printf("%d", isRoot[i]);if(i < ans) printf(" ");}return 0;}
阅读全文
1 0
- PAT a1107题解
- PAT-A1107
- PAT A1107. Social Clusters (30)
- PAT A1107 social clusters (30)
- PAT A1107. Social Clusters (30)
- 并查集--PAT.A1107.Social Clusters
- PAT 1001-1010 题解
- PAT 1011-1020 题解
- PAT 1021-1030 题解
- PAT 1031-1040 题解
- PAT 1041-1050 题解
- PAT 1051-1060 题解
- PAT(basic level)题解
- PAT乙级题解
- PAT题解目录
- PAT甲级题解目录
- PAT乙级题解目录
- PAT甲级1001题解
- PAT a1106题解
- Linux-grep
- POJO、JavaBean、EJB的区别
- 畅通工程 HDU
- PoEdu_Python_Lesson008_复习_零散知识点
- PAT a1107题解
- redis初理解
- caffe加层
- Linux命令详解-sar
- PAT a1124题解
- PAT a1125题解
- 初识Hdoop
- 使用Java实现多线程下载断点续传功能案例
- PAT a1126题解