제출 #832604

#제출 시각아이디문제언어결과실행 시간메모리
832604Rafi22열쇠 (IOI21_keys)C++17
20 / 100
73 ms20752 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define ld long double #define pb push_back #define st first #define nd second #define all(x) (x).begin(),(x).end() #define sz(x) (int)(x).size() int inf=1000000007; ll infl=1000000000000000007; const int N=307; vector<pair<int,int>>G[N]; bool is[N]; bool odw[N]; int r[N]; vector<int>find_reachable(vector<int>K,vector<int>U,vector<int>V,vector<int>C) { int n=sz(K),m=sz(U); for(int i=0;i<m;i++) { G[U[i]].pb({V[i],C[i]}); G[V[i]].pb({U[i],C[i]}); } int mn=inf; for(int i=0;i<n;i++) { memset(is,0,sizeof is); memset(odw,0,sizeof odw); deque<int>Q; Q.pb(i); odw[i]=1; vector<pair<int,int>>X; while(sz(Q)>0) { int v=Q[0]; Q.pop_front(); r[i]++; is[K[v]]=1; for(auto x:G[v]) X.pb(x); for(auto [u,c]:X) { if(!odw[u]&&is[c]) { odw[u]=1; Q.pb(u); } } } mn=min(mn,r[i]); } vector<int>ans(n,0); for(int i=0;i<n;i++) if(r[i]==mn) ans[i]=1; return ans; } /* int main() { int n,m; cin>>n>>m; vector<int>K(n); vector<int>U(m),V(m),C(m); vector<int>V=find_reachable(K,U,V,C); for(auto x:V) cout<<x<<" "; cout<<endl; return 0; }*/
#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...