POJ 1611 解题报告
来源:互联网 发布:卡iphone7plus在线软件 编辑:程序博客网 时间:2024/05/29 07:23
这道题是union-find的应用,就是找到和0在一个集合的所有元素个数。
1611Accepted372K16MSC++1636B/* ID: thestor1 LANG: C++ TASK: poj1611 */#include <iostream>#include <fstream>#include <cmath>#include <cstdio>#include <cstring>#include <limits>#include <string>#include <vector>#include <list>#include <set>#include <map>#include <queue>#include <stack>#include <algorithm>#include <cassert>using namespace std;const int MAXN = 30000;void makeset(const int N, std::vector<int> &parent, std::vector<int> &rank){for (int u = 0; u < N; ++u){parent[u] = u;rank[u] = 0;}}int find(int u, std::vector<int> &parent){if (parent[u] != u){parent[u] = find(parent[u], parent);}return parent[u];}void union_set(int u, int v, std::vector<int> &parent, std::vector<int> &rank){int ru = find(u, parent);int rv = find(v, parent);if (ru == rv){return;}if (rank[ru] < rank[rv]){parent[ru] = rv;}else if (rank[rv] < rank[ru]){parent[rv] = ru;}else{parent[ru] = rv;rank[rv]++;}}int main(){std::vector<int> parent(MAXN);std::vector<int> rank(MAXN);int n, m;while (scanf("%d%d", &n, &m) && n != 0){makeset(n, parent, rank);for (int i = 0; i < m; ++i){int k;scanf("%d", &k);if (k == 0){continue;}int u;scanf("%d", &u);for (int j = 1; j < k; ++j){int v;scanf("%d", &v);union_set(u, v, parent, rank);}}int cnt = 1;for (int i = 1; i < n; ++i){if (find(0, parent) == find(i, parent)){cnt++;}}printf("%d\n", cnt);}return 0; }
0 0
- POJ 1611 解题报告
- POJ 1611 The Suspects 解题报告
- POJ - 1611 The Suspects解题报告
- poj数百篇解题报告
- poj 1141解题报告
- poj 1001解题报告
- poj 1011 解题报告
- poj 1087 解题报告
- poj 2153解题报告
- poj 2051解题报告
- POJ 1167 解题报告
- poj 1026 解题报告
- POJ 1077 解题报告
- POJ 1042 解题报告
- POJ 1095 解题报告
- POJ 1159解题报告
- poj 2312解题报告
- POJ 1001解题报告
- C++处理txt文件
- Find Minimum in Rotated Sorted Array II
- C++11-the new ISO C++ Standard
- 用网络机顶盒板卡做广告机的主机
- poj 1149 PIGS(最大流)
- POJ 1611 解题报告
- ubuntu14下setfacl使用
- POJ 1552 解题报告
- Mac Terminal 命令自动补全
- ray ban sunglasses jcwhm ruykq hhpme
- Jump Game
- windows 7+vs2012+cocos2d-x 3.2环境搭建以及安卓移植成功案例(亲测)
- 使用VS打开已有项目Dialog视图
- 访问excle