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 |
why RE??郁闷的就是用这个代码交2492居然过了, 求救................#include <iostream> using namespace std; const int MAXN = 100001; class UFset { public: int parent[MAXN]; UFset(); int Find(int); void Union(int, int); }; UFset::UFset() { for (int i=0; i<MAXN; i++) parent[i] = -100002; //memset(parent, -100002, sizeof(parent)); } int UFset::Find(int x) { if (parent[x] < 0) return x; else parent[x] = Find(parent[x]); // 压缩路径 } void UFset::Union(int x, int y) { int pX = Find(x); int pY = Find(y); int tmp; if (pX != pY) { tmp = parent[pX] + parent[pY]; // 加权合并 if (parent[pX] > parent[pY]) { parent[pX] = pY; parent[pY] = tmp; } else { parent[pY] = pX; parent[pX] = tmp; } } } int main() { int caseTime; char t; int tmp, m; int x, y; int px, py; //scanf("%d\n", &caseTime); cin >> caseTime; // scanf("%d", &caseTime); while (caseTime-- != 0) { UFset diff; UFset same; // scanf("%d ", &tmp); // scanf("%d\n", &m); cin >> tmp >> m; for (int i=0; i<m; i++) { /* scanf("%c ", &t); scanf("%d ", &x); scanf("%d\n", &y);*/ // scanf("%c %d %d", &t, &x, &y); // printf("%c %d %d\n", t, x, y); cin >> t >> x >> y; if (t == 'A') { if (same.Find(x) == same.Find(y)) { printf("In the same gang.\n"); } else if (diff.Find(x) == diff.Find(y)) { printf("In different gangs.\n"); } else { printf("Not sure yet.\n"); } } else { if (diff.parent[x] == -100002 && diff.parent[y] == -100002) { diff.Union(x, y); if (diff.Find(x) == x) diff.parent[x] = -y; else diff.parent[y] = -x; } else { px = diff.Find(x); py = diff.Find(y); if (diff.parent[px] != -100002) { if (px != x) same.Union(px, y); else same.Union(-diff.parent[px], y); } if (diff.parent[py] != -100002) { if (py != y) same.Union(py, x); else same.Union(-diff.parent[py], x); } } } } } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator