Submission #1271355

#TimeUsernameProblemLanguageResultExecution timeMemory
1271355rayan_bdBosses (BOI16_bosses)C++20
0 / 100
0 ms328 KiB
#include <bits/stdc++.h> using namespace std; const int mxN = 5005; int v[mxN], vis[mxN]; vector<int> adj[mxN], nadj[mxN]; void dfs(int u){ vis[u] = 1; int t = 0; for(auto it : nadj[u]){ if(!vis[it]){ dfs(it); t += v[it]; } } v[u] = t + 1; } int get_answer(int root, int n){ for(int i = 1; i <= n; ++i) vis[i] = v[i] = 0, nadj[i].clear(); queue<int> q; q.push(root); while(q.size()){ int sz = q.size(); while(sz--){ int tp = q.front(); q.pop(); vis[tp] = 1; for(auto it : adj[tp]){ if(!vis[it]){ vis[it] = 1; q.push(it); nadj[tp].push_back(it); } } } } for(int i = 1; i <= n; ++i) vis[i] = 0; dfs(root); int ans = 0; for(int i = 1; i <= n; ++i) ans += v[i]; return ans; } signed main(){ ios_base::sync_with_stdio(0); cin.tie(nullptr); cout.tie(nullptr); int n, u; cin >> n; for(int i = 1, k; i <= n; ++i){ cin >> k; while(k --){ cin >> u; adj[u].push_back(i); } } int ans = 1e9; for(int i = 1; i <= n; ++i) ans = min(ans, get_answer(i, n)); cout << ans << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...