虽然格斗是非常需要技术的一项运动,但是打群架却不需要什么技术,而且场面一般比较混乱,分不清谁和谁是一伙的,只能看出谁和谁不是一伙的,而且打群架经常会出现猪一样的队友,误伤自己人。现在给你一些信息,请你依据这些信息判断是否一定存在猪一样的队友。
标签:
3 3
1 2
2 3
1 3
4 2
1 2
3 4
YES
NO
a攻击b且b攻击c 则可推断 a,c同伙,若a攻击c则有矛盾,即必然存在误伤。
AC代码:
#include <bits/stdc++.h> using namespace std; const int maxn = 10005; int f[2 * maxn + 2]; int Find(int x){ return x == f[x] ? x : f[x] = Find(f[x]); } void unin(int x, int y){ x = Find(x); y = Find(y); if(x != y) f[x] = y; } int main(){ #ifdef sxk freopen("in.txt", "r", stdin); #endif // sxk int n, m, a, b; while(~scanf("%d%d", &n, &m)){ for(int i=1; i<=2 * maxn; i++) f[i] = i; int flag = 0; for(int i=0; i<m; i++){ scanf("%d%d", &a, &b); if(Find(a) == Find(b) || Find(a + maxn) == Find(b + maxn)) flag = 1; else{ unin(a, b + maxn); unin(a + maxn, b); } } puts(flag ? "YES" : "NO"); } return 0; }
标签:
原文地址:http://blog.csdn.net/u013446688/article/details/46475691