Submission #1314956

#TimeUsernameProblemLanguageResultExecution timeMemory
1314956PlayVoltz열쇠 (IOI21_keys)C++20
9 / 100
3094 ms23640 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back #define mp make_pair #define pii pair<int, int> #define fi first #define se second int n, mn=INT_MAX/2; vector<int> vect, ans; vector<vector<pii> > graph; void bfs(int start){ vector<bool> key(n, 0), visited(n, 0); vector<vector<int> > nokey(n); queue<int> q; q.push(start); key[vect[start]]=1; while (q.size()){ int node=q.front(); q.pop(); if (visited[node])continue; visited[node]=1; for (auto num:graph[node])if (!visited[num.fi]){ if (key[num.se]){ q.push(num.fi); if (!key[vect[num.fi]])for (auto a:nokey[vect[num.fi]])q.push(a); key[vect[num.fi]]=1; } else nokey[num.se].pb(num.fi); } } int res=0; for (int i=0; i<n; ++i)if (visited[i])++res; if (res<mn)mn=res, ans.clear(), ans.pb(start); else if (res==mn)ans.pb(start); } vector<int> find_reachable(vector<int> r, vector<int> u, vector<int> v, vector<int> c){ n=r.size(); vect=r; graph.resize(n); for (int i=0; i<u.size(); ++i){ graph[u[i]].pb(mp(v[i], c[i])); graph[v[i]].pb(mp(u[i], c[i])); } for (int i=0; i<n; ++i)bfs(i); vector<int> res(n, 0); for (auto a:ans)res[a]=1; return res; }
#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...