제출 #435289

#제출 시각아이디문제언어결과실행 시간메모리
435289Maqsut_03열쇠 (IOI21_keys)C++17
9 / 100
129 ms17184 KiB
#include<bits/stdc++.h> #define ll long long #define ff first #define ss second using namespace std; const int N = 2222; vector<pair<int, int> > g[N]; int n, m; std::vector<int> find_reachable(std::vector<int> r, std::vector<int> u, std::vector<int> v, std::vector<int> c) { std::vector<int> ans(r.size(), 1); n = r.size(); m = u.size(); for (int i=0; i<m; i++) { g[v[i]].push_back({u[i], c[i]}); g[u[i]].push_back({v[i], c[i]}); } stack<int> s; bool used[N], ka[N]; int q, k[N]; for (int i=0; i<n; i++) { memset(used, 0, sizeof(used)); memset(ka, 0, sizeof(ka)); s.push(i); while (s.size() > 0) { int i0 = s.top(); used[i0] = 1; ka[r[i0]] = 1; s.pop(); for (auto l:g[i0]) { if (ka[l.ss] == 1 && used[l.ff] == 0) s.push(l.ff); } } q = 0; for (int i0=0; i0<n; i0++) if (used[i0]) q++; k[i] = q; } int mn = N; for (int i=0; i<n; i++) mn = min(k[i], mn); for (int i=0; i<n; i++) if (k[i] != mn) ans[i] = 0; 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...