http://acm.hdu.edu.cn/showproblem.php?pid=1829
#include <iostream> #include <cstdio> #include <string> #include <cstring> #include <cstdlib > #include <algorithm> #include <vector> #include <set> #include <map> #include <iomanip >using namespace Std;int t, N, m;int fa[2200];int sex[2200];//sex[i]=j denote i with J sex opposite int A, b;int ok;int findd (int x) {if (x = = Fa[x]) return X;elsereturn findd (fa[x]);} void un (int x, int y) {int fx = FINDD (x), int fy = findd (y), if (FX = = FY)///same-sex {return;} Else{if (FY > FX) fa[fy] = fx;else fa[fx] = fy;}} int cases = 1;int Main () {scanf ("%d", &t), while (t--) {OK = 1;scanf ("%d%d", &n, &m); { for (int i = 1; I <= n; i++) {fa[i] = i;} memset (sex,0,sizeof (Sex)); for (int i = 1; I <= m;i++) {scanf ("%d%d", &a,&b), if (!ok) continue;if (findd (a) = = fin DD (b))///same-sex {ok = 0;continue;} if (sex[a] = = 0) {Sex[a] = b;} Else{un (Sex[a], b);} if (sex[b] = = 0) {Sex[b] = A;} Else{un (Sex[b], a);}} if (!ok) {printf ("Scenario #%d:\n", cases++);p UTS ("suspicious Bugs found!"); printf ("\n ");} else{printf ("Scenario #%d:\n", cases++);p UTS ("No Suspicious Bugs found!"); printf ("\ n");}} return 0;}
hdu-1829 & poj-2492 and check set