?
# | Author | Problem | Lang | Verdict | Time | Memory | Sent | Judged | |
---|---|---|---|---|---|---|---|---|---|
187487443 |
Practice: DaiRuiChen007 |
1672F2 - 13 | C++14 (GCC 6-32) | Accepted | 140 ms | 8796 KB | 2023-01-01 04:16:03 | 2023-01-01 04:16:03 |
// LUOGU_RID: 98400367 #include<bits/stdc++.h> using namespace std; const int MAXN=2e5+1; int a[MAXN],b[MAXN],cnt[MAXN],deg[MAXN]; vector <int> G[MAXN]; inline void solve() { int n,u=1; scanf("%d",&n); for(int i=1;i<=n;++i) deg[i]=0,cnt[i]=0,G[i].clear(); for(int i=1;i<=n;++i) scanf("%d",&a[i]),++cnt[a[i]]; for(int i=1;i<=n;++i) scanf("%d",&b[i]); for(int i=1;i<=n;++i) if(cnt[a[i]]>cnt[a[u]]) u=i; for(int i=1;i<=n;++i) { if(a[i]==a[u]||b[i]==a[u]) continue; G[a[i]].push_back(b[i]); ++deg[b[i]]; } queue <int> q; for(int i=1;i<=n;++i) if(!deg[i]) q.push(i); while(!q.empty()) { int p=q.front(); q.pop(); for(int v:G[p]) { --deg[v]; if(!deg[v]) q.push(v); } } for(int i=1;i<=n;++i) { if(deg[i]) { puts("WA"); return ; } } puts("AC"); } signed main() { int T; scanf("%d",&T); while(T--) solve(); return 0; }
?
?
?
?