Submission #436768

#TimeUsernameProblemLanguageResultExecution timeMemory
436768David_M열쇠 (IOI21_keys)C++17
0 / 100
5 ms7244 KiB
#include "keys.h" #include <bits/stdc++.h> using namespace std; #define vi vector<int> #define pii pair<int, int> #define pb push_back #define F first #define S second const int N=300005; vector<pii> V[N]; pair<int, int> ans[N]; vi find_reachable(vi r, vi u, vi v, vi c){ int n=r.size(), m=u.size(); vi Ans(n, 0); for(int j=0; j<m; j++){ int x=u[j], y=v[j], C=c[j]; V[x].pb({y,C}); V[y].pb({x,C}); } for (int i=0; i<n; i++){ bool C[n], f[n]; vi vv[n]; C[r[i]]=true; queue<int> q; q.push(i); f[i]=true; while(!q.empty()){ans[i].F++; int x=q.front(); q.pop(); for (auto [y,c]:V[x]){ if(f[y])continue; if(!C[c])vv[c].pb(y); else f[y]=true,q.push(y); } if(!C[r[x]]){for (auto k:vv[r[x]])q.push(k); C[r[i]]=true;} } } sort(ans, ans+n); int R=ans[0].F, o=0; while(ans[o].F==R){ Ans[ans[o].S]=1; o++; } return Ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...