Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:俺第一次贴代码,实在是找不出 wa 在哪里了,拜谢各位同学帮忙看一下In Reply To:俺第一次贴代码,实在是找不出 wa 在哪里了,拜谢各位同学帮忙看一下 Posted by:loganeco at 2012-10-19 11:55:59 > 俺代码如下,MLE过了,修改后一直 WA. > 请帮我看一下,或者给几个case也好。 > 谢过了。 > > #include <stdio.h> > #include <string.h> > #include <stdlib.h> > > struct crim_t { > crim_t() > :boss(0), rev(0) > {} > int boss; // 该crim_t的比较者,即D 1 2,则 2.boss = 1, 2.rev = 1 > int rev; // 1 表示该crim_t 与其 boss 不在同一团伙 > }; > > const int N = 100001; > crim_t crims[N]; > > int find(int x) > { > if (crims[x].boss == 0) > return x; > int xb = find(crims[x].boss); > crims[x].boss = xb; > crims[x].rev ^= crims[crims[x].boss].rev; > return xb; > } > > void union_(int x, int y) > { > int xb = find(x); > int yb = find(y); > if (xb != yb) { // 不加这个判断貌似 MLE > crims[yb].boss = xb; > crims[yb].rev = 1 ^ crims[y].rev ^ crims[x].rev; > } > } > > void answer(int x, int y) > { > int xp = find(x); > int yp = find(y); > if (xp == yp) { > if (crims[x].rev == crims[y].rev) > printf("In the same gang.\n"); > else > printf("In different gangs.\n"); > } else > printf("Not sure yet.\n"); > } > > int main() > { > int t; > scanf("%d", &t); > for (int i = 0; i < t; ++i) { > int n, m; > scanf("%d%d", &n, &m); > for (int j = 0; j < m; ++j) { > char c; > int x, y; > scanf(" %c%d%d", &c, &x, &y); > if (c == 'A') { > if (n == 2) { // 只有两个crim_t,直接不在同一团伙 > printf ("In different gangs.\n"); > } else { > answer(x, y); > } > } else > union_(x, y); > } > memset(crims, 0, N); > } > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator