제출 #835497

#제출 시각아이디문제언어결과실행 시간메모리
835497IS_Rushdi열쇠 (IOI21_keys)C++17
37 / 100
3031 ms23832 KiB
#include <bits/stdc++.h> using namespace std; vector<int> find_reachable(vector<int> r, vector<int> u, vector<int> v, vector<int> c) { vector<int> ans(r.size(), 1); int n = r.size(); int m = u.size(); vector<vector<pair<int,int>>>a(n); for(int i = 0; i < m; i++){ a[v[i]].push_back({u[i],c[i]}); a[u[i]].push_back({v[i],c[i]}); } int mn = 2e9; vector<int>cnt(n); for(int i = 0; i < n; i++){ vector<bool>vis(n); vector<bool>vis2(n); vector<vector<int>>arr(n,vector<int>()); queue<int>q; q.push(i); while(!q.empty()){ int node = q.front(); q.pop(); if(vis[node]) continue; vis[node]=1; if(!vis2[r[node]]){ vis2[r[node]]=1; for(int to : arr[r[node]]){ if(vis[to]) continue; q.push(to); } } for(pair<int,int> to : a[node]){ if(vis[to.first]) continue; if(!vis2[to.second]){ arr[to.second].push_back(to.first); }else{ q.push(to.first); } } } for(int j = 0; j < n; j++){ if(vis[j]) cnt[i]++; } mn = min(mn,cnt[i]); } for(int i = 0; i < n; i++){ if(cnt[i] == mn) ans[i] = 1; else ans[i] = 0; } return ans; } // int main(){ // int n; cin >> n; // vector<int>a(n); // for(int i = 0; i < n; i++) cin >> a[i]; // int m; cin >> m; // vector<int>b(m),c(m),d(m); // for(int i = 0; i < m; i++) cin >> b[i]; // for(int i = 0; i < m; i++) cin >> c[i]; // for(int i = 0; i < m; i++) cin >> d[i]; // vector<int>ans = find_reachable(a,b,c,d); // for(int i = 0; i < n; i++) cout << ans[i] << ' '; // }
#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...