Submission #480411

#TimeUsernameProblemLanguageResultExecution timeMemory
480411inventiontimeBosses (BOI16_bosses)C++17
100 / 100
745 ms664 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back typedef vector<int> vi; const int MAXN = 5005; vi adj[MAXN]; int level[MAXN]; int of_level[MAXN]; int size[MAXN]; bool vis[MAXN]; int N; int min_res = INT_MAX; void clear() { for(int i = 0; i <= N; i++) { vis[i] = false; of_level[i] = 0; } } int main() { cin >> N; int k, x; for(int i = 1; i <= N; i++) { cin >> k; while(k--) { cin >> x; adj[x].pb(i); } } for(int r = 1; r <= N; r++) { clear(); vis[r] = true; level[r] = 1; of_level[1]++; queue<int> q; q.push(r); while(!q.empty()) { int u = q.front(); q.pop(); for(auto v : adj[u]) if(!vis[v]) { vis[v] = true; level[v] = level[u] + 1; of_level[level[v]]++; q.push(v); } } int nodes = 0; int result = 0; for(int i = 1; i <= N; i++) { if(of_level[i] == 0) break; nodes += of_level[i]; result += of_level[i]*i; } if(nodes == N) min_res = min(min_res, result); } cout << min_res << endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...