Submission #1211656

#TimeUsernameProblemLanguageResultExecution timeMemory
1211656m5588ohammedKeys (IOI21_keys)C++20
37 / 100
772 ms8772 KiB
#include <bits/stdc++.h> using namespace std; vector <int> edges[2005],arr; set <int> keys; vector <array<int,2>> v[2005]; int n,m,vis[2005],cost[2005],cnt=0,mn=1e9; void unlock(int i){ cnt++; vis[i]=1; if(keys.find(arr[i])==keys.end()){ keys.insert(arr[i]); for(int j:edges[arr[i]]) if(vis[j]==0) unlock(j); } for(auto [j,c]:v[i]){ if(vis[j]==1) continue; if(keys.find(c)!=keys.end()) unlock(j); else{ edges[c].push_back(j); } } return; } void bfs(int i){ cnt=0; keys.clear(); for(int i=0;i<n;i++){ edges[i].clear();vis[i]=0; } unlock(i); cost[i]=cnt; mn=min(mn,cost[i]); return; } vector<int> find_reachable(vector<int> r, vector<int> b, vector<int> a,vector<int> c){ vector <int> ans; n=r.size();m=a.size(); arr=r; for(int i=0;i<m;i++){ v[a[i]].push_back({b[i],c[i]}); v[b[i]].push_back({a[i],c[i]}); } for(int i=0;i<n;i++) bfs(i); for(int i=0;i<n;i++) { if(mn==cost[i]) ans.push_back(1); else ans.push_back(0); } return ans; return {}; }
#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...