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 |
0ms水过之~#include <iostream> #include <cstring> #include <cstdio> #include <queue> #include <functional> using namespace std; struct Edge { int v, nex; }; Edge edge[901]; int o; int head[27]; int deg[27]; string result; void addEdge(int from, int to) { edge[o].v = to; edge[o].nex = head[from]; head[from] = o; ++o; } enum res{ok, roop, no}; res run(int n) { res ret = ok; result = ""; int cnow[27]; bool flag[27]; memset(flag, 0, sizeof(flag)); for(int i = 0; i < n; ++i) { cnow[i] = deg[i]; } for(int i = 0; i<n;++i) { // printf("degs: "); // for(int i = 0; i < n; ++i) // { // printf("%c : %d ", 'A'+i, deg[i]); // } // printf("\n"); int degZero = 0; int at; for(int j = 0; j <n; ++j) { if(flag[j] || cnow[j]) { continue; } ++degZero; if(degZero > 1) continue; at = j; } if(degZero == 0) { ret = roop; } if(degZero > 1) { ret = no; } flag[at] = true; result += at + 'A'; for(int ptr = head[at]; ptr; ptr = edge[ptr].nex) { --cnow[edge[ptr].v]; } } return ret; } int main() { int n, m; char a, b; while(scanf("%d %d", &n, &m) != EOF) { if(!n && !m) break; o = 1; memset(head, 0, sizeof(head)); for(int i = 0; i<27; ++i) deg[i] = 0; int at(-1); int end(false); res g; for(int i = 0; i < m; ++i) { scanf(" %c<%c", &a, &b); if(end) continue; addEdge(a - 'A', b-'A'); deg[b-'A']++; g = run(n); if(g != no) { at = i + 1; end = true; } } if(end) { if(g == roop) { printf("Inconsistency found after %d relations.\n", at); } else { printf("Sorted sequence determined after %d relations: %s.\n", at, result.c_str()); } } else { printf("Sorted sequence cannot be determined.\n"); } // } // if(!ok) // { // if(at == -1) // printf("Sorted sequence cannot be determined.\n"); // else // printf("Inconsistency found after %d relations.\n", at); // } // else // { // printf("Sorted sequence determined after %d relations: %s.\n", at, result.c_str()); // } } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator