Submission #743140

#TimeUsernameProblemLanguageResultExecution timeMemory
743140hmm789Viruses (BOI20_viruses)C++14
0 / 100
1 ms340 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define INF 9223372036854775807 vector<vector<int>> adj2[200]; set<int> adj[200]; int ans[200]; bool v[200]; bool cyc(int x) { if(v[x]) return true; v[x] = 1; for(int i : adj[x]) { bool f = cyc(i); //~ cout << "a " << x << " " << i << " " << f << endl; if(f) return true; } v[x] = 0; return false; } int dp(int x) { if(x == 0 || x == 1) return 1; if(ans[x] != -1) return ans[x]; ans[x] = INF; for(vector<int> v : adj2[x]) { int tmp = 0; for(int i : v) { tmp += dp(i); } ans[x] = min(ans[x], tmp); } return ans[x]; } int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int g, n, m, x, y, a; cin >> g >> n >> m; for(int i = 0; i < n; i++) { cin >> x >> a; vector<int> tmp; for(int j = 0; j < a; j++) { cin >> y; adj[x].insert(y); tmp.push_back(y); } adj2[x].push_back(tmp); } memset(ans, -1, sizeof(ans)); for(int i = 0; i < g; i++) { memset(v, 0, sizeof(v)); if(cyc(i)) ans[i] = -2; } for(int i = 2; i < g; i++) { if(dp(i) == -2) cout << "YES\n"; else cout << "NO " << dp(i) << '\n'; } }
#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...