Submission #1271387

#TimeUsernameProblemLanguageResultExecution timeMemory
1271387rayan_bdBosses (BOI16_bosses)C++20
100 / 100
772 ms1100 KiB
#include <bits/stdc++.h> using namespace std; const int mxN = 5005; #define int long long int v[mxN], vis[mxN], cnt = 0; vector<int> adj[mxN], nadj[mxN]; void dfs(int u){ v[u] = 1; cnt ++; for(auto it : nadj[u]){ dfs(it); v[u] += 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); vis[root] = 1; while(q.size()){ int sz = q.size(); while(sz--){ int tp = q.front(); q.pop(); for(auto it : adj[tp]){ if(!vis[it]){ vis[it] = 1; q.push(it); nadj[tp].push_back(it); } } } } cnt = 0; dfs(root); int ans = 0; for(int i = 1; i <= n; ++i) ans += v[i]; if(cnt != n) return 1e18; 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 = 1e18; 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...