POJ 2492 解题报告
2015-04-07 00:22
288 查看
这道题是union-find的应用。直接是在poj 1732的基础上改的(http://blog.csdn.net/thestoryofsnow/article/details/41939671)。
thestoryofsnow | 2492 | Accepted | 192K | 829MS | C++ | 1870B |
/* ID: thestor1 LANG: C++ TASK: poj2492 */ #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 = 2000; void makeset(vector<int> &parent, vector<int> &rank, const int N) { for (int u = 0; u < N; ++u) { parent[u] = u; rank[u] = 0; } } int find(int u, vector<int> &parent) { if (parent[u] != u) { parent[u] = find(parent[u], parent); } return parent[u]; } void union_set(int u, int v, vector<int> &parent, 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() { vector<int> parent(2 * MAXN); vector<int> rank(2 * MAXN); int T; scanf("%d", &T); for (int t = 0; t < T; ++t) { int N, M; scanf("%d%d", &N, &M); makeset(parent, rank, N << 1); bool suspicious = false; for (int i = 0; i < M; ++i) { int u, v; scanf("%d%d", &u, &v); u--, v--; // already have a conclusion, no need to process if (suspicious) { continue; } if (find(u, parent) == find(v, parent) || find(u + N, parent) == find(v + N, parent)) { suspicious = true; } else { union_set(u, v + N, parent, rank); union_set(v, u + N, parent, rank); } } printf("Scenario #%d:\n", t + 1); if (suspicious) { printf("Suspicious bugs found!\n\n"); } else { printf("No suspicious bugs found!\n\n"); } } return 0; }
相关文章推荐
- 整数分解和划分 - 兼 ACM PKU POJ 1221 解题报告
- openoj的一个小比赛(J题解题报告)poj1703(并查集)
- POJ 1002 487-3279 解题报告
- POJ 2719 Faulty Odometer 解题报告
- POJ 1007 解题报告 DNA Sorting
- POJ 1922 解题报告
- POJ - 3087 Shuffle'm Up解题报告(模拟)
- poj1326解题报告
- POJ 1948 Triangular Pastures 解题报告
- POJ 1001 Exponentiation解题报告
- POJ3009Curling 2.0解题报告
- Pku acm 2492 A Bug's Life数据结构题目解题报告(十)---- 并查集的应用
- poj 2503 Babelfish(字典树或STL水题) 解题报告(百炼2804)
- 【原】 POJ 1426 Find The Multiple BFS搜索 解题报告
- 【原】 POJ 3517 And Then There Was One Joseph问题 解题报告
- poj1173 解题报告
- POJ_1061 青蛙的约会 解题报告
- POJ 1047——解题报告
- POJ 1325 Machine Schedule 解题报告
- poj 1338 ugly numbers和poj 2247Humble Numbers 解题报告(附详细分析)