Submission #435058

#TimeUsernameProblemLanguageResultExecution timeMemory
435058DanerZeinKeys (IOI21_keys)C++17
0 / 100
2 ms460 KiB
#include <vector> #include <bits/stdc++.h> using namespace std; typedef pair<int,int> ii; typedef vector<ii> vi; const int MAX=1e9; const int MAX_N=1e5; vector<vi> G; bool vis[MAX_N],ll[MAX_N]; std::vector<int> find_reachable(std::vector<int> r, std::vector<int> u, std::vector<int> v, std::vector<int> c) { int n=r.size(); int m=u.size(); vector<int> ans(n,0); int mi=MAX; G.resize(n+1); for(int i=0;i<m;i++){ int a=u[i],b=v[i],w=c[i]; G[a].push_back(ii(b,w)); G[b].push_back(ii(a,w)); } for(int i=0;i<n;i++){ memset(vis,0,sizeof vis); memset(ll,0,sizeof ll); queue<int> q; q.push(i); bool sw=0; ll[r[i]]=vis[i]=1; int c=1; while(!q.empty()){ sw=0; int x; x=q.front(); bool s1=0; q.pop(); for(auto &v:G[x]){ if(!vis[v.first]){ if(ll[v.second]){ q.push(v.first); ll[r[v.first]]=vis[v.first]=1; c++; sw=1; } else s1=1; } } if(!sw || c>mi) break; if(s1) q.push(x); } if(mi>c){ for(int j=0;j<n;j++) ans[j]=0; mi=c; } if(mi==c){ ans[i]=1; } //cout<<tam[findset(i)]<<endl; } 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...