Submission #767602

#TimeUsernameProblemLanguageResultExecution timeMemory
7676021neBosses (BOI16_bosses)C++14
67 / 100
1546 ms1004 KiB
/* * author : Apiram * created: 27.06.2023 03:25:28 */ #include<bits/stdc++.h> using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); int n;cin>>n; vector<vector<int>>adj(n); for (int i = 0;i<n;++i){ int k;cin>>k; for (int j = 0;j<k;++j){ int x;cin>>x; --x; adj[x].push_back(i); } } int pos = 1e9; for (int i = 0;i<n;++i){ queue<int>q; int curv = 1; int ans = 0; vector<int>visited(n,false); vector<int>parent(n,-1); vector<int>depth(n,0); visited[i] = true; vector<vector<int>>nx(n); q.push(i); vector<int>cost(n,1); while(!q.empty()){ auto u = q.front(); q.pop(); for (auto x:adj[u]){ if (!visited[x]){ visited[x] = true; parent[x] = u; depth[x] = depth[u] + 1; nx[u].push_back(x); q.push(x); curv++; } } } if (curv == n){ vector<int>order(n); iota(order.begin(),order.end(),0); sort(order.begin(),order.end(),[&](int x,int y){ return depth[x] > depth[y]; }); for (auto j:order){ for (auto y:nx[j]){ cost[j]+=cost[y]; } } for (int j = 0;j<n;++j){ // cout<<cost[j]<<" "; ans+=cost[j]; } //cout<<'\n'; pos = min(pos,ans); } } cout<<pos<<'\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...