POJ 1611 - The Suspects
2012-10-09 20:45
246 查看
Advanced Data Structures :: Disjoint Set
Description
有n个学生,编号从 0 到 n - 1 。
学生们分成了几个团伙。
而学生0是个“咸鱼饭”,因此和他一个团伙的人都是“咸鱼饭”。
问有几个“咸鱼饭”。
Type
Advanced Data Structures :: Disjoint Set
Analysis
用并查集并一下,然后枚举下每个学生,
查一下有多少人和学生0一个集合,就可以了。
Solution
Description
有n个学生,编号从 0 到 n - 1 。
学生们分成了几个团伙。
而学生0是个“咸鱼饭”,因此和他一个团伙的人都是“咸鱼饭”。
问有几个“咸鱼饭”。
Type
Advanced Data Structures :: Disjoint Set
Analysis
用并查集并一下,然后枚举下每个学生,
查一下有多少人和学生0一个集合,就可以了。
Solution
// POJ 1611 // The Suspect // by A Code Rabbit #include <cstdio> const int MAXN = 30002; struct DisjointSet { int p[MAXN]; void Init(int); void Make(int x) { p[x] = x; } int Find(int x) { return p[x] == x ? x : p[x] = Find(p[x]); } int Union(int x, int y) { p[Find(x)] = Find(y); } }; void DisjointSet::Init(int n) { for (int i = 0; i < n; i++) Make(i); } int n, m; DisjointSet set; int main() { while (scanf("%d%d", &n, &m) && (n || m)) { set.Init(n); for (int i = 0; i < m; i++) { int k, x, y; scanf("%d", &k); scanf("%d", &x); for (int j = 0; j < k - 1; j++) { scanf("%d", &y); set.Union(x, y); } } int ans = 0; for (int i = 0; i < n; i++) if (set.Find(i) == set.Find(0)) ans++; printf("%d\n", ans); } return 0; }
相关文章推荐
- poj 1611_The Suspects_并查集
- POJ1611-The Suspects
- POJ 1611 The Suspects
- POJ 1611 The Suspects
- 【并查集】:poj1611,The Suspects
- POJ 1611 / ZOJ 1789: The Suspects - 并查集
- 【POJ 1611】The Suspects并查集
- 【POJ 1611】The Suspects
- POJ 1611 The Suspects 并查集简单题
- POJ-1611 ----The Suspects
- POJ 1611 The Suspects
- 【48.51%】【poj 1611】The Suspects
- Poj 1611 The Suspects
- POJ 1611 The Suspects [简单并查集应用]
- poj - 1611 The Suspects
- POJ 1611 The Suspects
- POJ 1611 The Suspects 并查集 Union Find
- POJ 1611 The Suspects - 并查集
- 平常水题 - The Suspects POJ-1611(并查集)
- poj 1611 The Suspects 并查集