Submission #743159

#TimeUsernameProblemLanguageResultExecution timeMemory
743159hmm789Viruses (BOI20_viruses)C++14
0 / 100
1 ms340 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define INF 1000000000000000000 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]; if(ans[x] == -2) return INF; if(v[x]) return INF; v[x] = 1; 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); } if(ans[x] == INF) ans[x] = -2; v[x] = 0; 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 = 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...