|
|
back to boardWhat am I missing here?? "Michael’s coach analyzed all subjects and prepared a list of M limitations in the form «si, ui» (1<= si, ui<= N; i=1, 2, ..., M), which means that subject si must be studied before subject ui" I take every node in the given order, and check whether it satisfies the limitations (there is no subject that must be studied before or I have already studied a necessary subject). Otherwise I output "NO"... But I get WA on test 16 :(((( #include <cstdio> #include <cstdlib> #include <cstring> #include <vector> using namespace std; #define MAXN 1005 vector<int> a[MAXN]; int r[MAXN], seen[MAXN], deg[MAXN]; int N, M, i, j, qb, qe; int main(void) { // freopen("1280.in", "r", stdin); memset(deg, 0, sizeof(deg)); for(scanf("%d %d", &N, &M); M; M --) { scanf("%d %d", &i, &j); a[j].push_back(i); ++ deg[j]; } for (i = 0; i < N; i ++) scanf("%d", &(r[i])); memset(seen, 0, sizeof(seen)); vector<int>::iterator it;
for (i = 0; i < N; i ++) { if (deg[r[i]] == 0) { seen[r[i]] = 1; continue; } bool fnd = false; for (it = a[r[i]].begin(); it != a[r[i]].end(); it ++) if (seen[*it]) { seen[r[i]] = 1; fnd = true; break; } if (!fnd) { printf("NO\n"); return 0; } } printf("YES\n"); return 0; } |
|
|