Submission #857846

#TimeUsernameProblemLanguageResultExecution timeMemory
857846vjudge1Bosses (BOI16_bosses)C++17
0 / 100
1 ms5212 KiB
//In His Name #include <bits/stdc++.h> using namespace std; typedef pair<int, int> pii; typedef pair<long long, int> pli; typedef pair<long long, long long> pll; #define ll long long #define int ll #define F first #define S second #define pb push_back #define bug(x) cout << "Ah shit , here we go again : " << x <<endl #define all(x) x.begin() , x.end() #define ceil(x,y) x/y + min(1,x%y); const int maxn = 1e5 + 10, MOD = 1e9 + 7; const ll INF = 1e18; int n , h[maxn] , ans = INF , ians = 0; vector<int> adj[maxn] , adj2[maxn]; bool mark[maxn]; void dfs(int v){ mark[v] = true; for(int u : adj2[v]){ if(!mark[u]){ dfs(u); h[v] += h[u]; } } } main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n; for(int i = 1 ; i <= n ; i++){ int x; cin >> x; for(int u = 1 ; u <= x ; u++){ int y; cin >> y; adj[y].pb(i); } } queue<int> q; for(int i = 1 ; i <= n ; i++){ q.push(i); mark[i] = true; while(!q.empty()){ int v = q.front(); q.pop(); for(int u : adj[v]){ if(!mark[u]) { q.push(u); mark[u] = true; h[u] = h[v]+1; } } } int maxi = -1e9 , ok = 1; for(int j = 1 ; j <= n ; j++) if(!mark[j]) ok = 0; for(int j = 1 ; j <= n ; j++){ if(h[j] > maxi) maxi = h[j]; h[j] = 0; mark[j] = false; } if(ok and maxi < ans) ans = maxi , ians = i; } q.push(ians); mark[ians] = true; while(!q.empty()){ int v = q.front(); q.pop(); for(int u : adj[v]){ if(!mark[u]) { q.push(u); mark[u] = true; h[u] = h[v]+1; adj2[v].pb(u); } } } memset(mark , false , sizeof mark); fill(h , h+n+1 , 1); dfs(ians); int sum = 0; for(int i = 1 ; i <= n ; i++) sum += h[i]; cout << sum; }

Compilation message (stderr)

bosses.cpp:32:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   32 | main(){
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...