Submission #643163

#TimeUsernameProblemLanguageResultExecution timeMemory
643163fatemetmhrBosses (BOI16_bosses)C++17
100 / 100
546 ms3032 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define pb push_back #define all(x) x.begin(), x.end() #define fi first #define se second const int maxn5 = 1e5 + 10; const int inf = 1e9; int n; vector <int> adj[maxn5]; int q[maxn5], h[maxn5]; bool mark[maxn5]; inline int check(int ro){ memset(mark, false, sizeof mark); mark[ro] = true; ll ans = n; h[ro] = 0; int l = 0, r = 1; q[0] = ro; while(l < r){ int v = q[l++]; ans += h[v]; for(auto u : adj[v]) if(!mark[u]){ h[u] = h[v] + 1; q[r++] = u; mark[u] = true; } } if(r < n) return inf; return ans; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n; for(int i = 0; i < n; i++){ int k; cin >> k; while(k--){ int a; cin >> a; a--; adj[a].pb(i); } } int ans = n * n + 1; for(int i = 0; i < n; i++) ans = min(ans, check(i)); cout << ans << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...