HDU 1829 - A Bug's Life
2017-09-06 15:55
405 查看
题目大意:有n只虫子,m对情侣,问其中是否有同性恋,一般虫子异性恋。
解题思路:与食物链那题有些相似,但又比那题简单许多。因为只有两种关系了,0为同性,1为异性,所以查找和合并时的关系变更尝试推一下就出来了。具体的详讲看POJ-1182
ac代码:
解题思路:与食物链那题有些相似,但又比那题简单许多。因为只有两种关系了,0为同性,1为异性,所以查找和合并时的关系变更尝试推一下就出来了。具体的详讲看POJ-1182
ac代码:
#include <iostream> #include <cstring> using namespace std; struct node{ int pre; int sex; }an[2005]; int t1, t2, flag, t, n, m, cnt=1; int find(int x) { int r; if (x != an[x].pre){ r = an[x].pre; an[x].pre = find(an[x].pre); an[x].sex = (an[x].sex + an[r].sex) % 2; } return an[x].pre; } void join(int x, int y) { int fx=find(x), fy=find(y); if (fx == fy){ if (an[x].sex == an[y].sex) flag = 1; } else{ an[fx].pre = fy; an[fx].sex = (an[y].sex -an[x].sex + 1) % 2; } } int main() { scanf("%d", &t); while (t--){ scanf("%d%d", &n, &m); flag = 0; for (int i=1; i<=n; i++){ an[i].pre = i; an[i].sex = 0; } for (int i=0; i<m; i++){ scanf("%d%d", &t1, &t2); join(t1, t2); } if (flag) printf("Scenario #%d:\nSuspicious bugs found!\n", cnt++); else printf("Scenario #%d:\nNo suspicious bugs found!\n", cnt++); if (t) printf("\n"); } return 0; }
相关文章推荐
- hdu 1829 A Bug's Life
- HDU 1829 A Bug's Life
- HDU 1829 A Bug's Life 并查集
- hdu 1829 A Bug's Life
- hdu 1829 A Bug's Life
- HDU 1829 A Bug's Life
- A Bug's Life HDU - 1829
- A Bug's Life-HDU-1829
- A Bug's Life HDU - 1829 (并查集)
- [并查集]HDU 1829/POJ 2492/HOJ 2319 A Bug's Life
- HDU 1829 A Bug's Life
- HDU 1829 A Bug's Life
- hdu 1829 A Bug's Life
- 【并查集 偏移量】HDU 1829 A Bug's Life
- hdu 1829 A Bug's Life
- hdu 1829 A Bug's Life 并查集
- HDU 1829 A Bug's Life
- HDU 1829 A Bug's Life
- HDU 1829 A Bug's Life
- HDU 1829 A Bug's Life