Submission #857965

#TimeUsernameProblemLanguageResultExecution timeMemory
857965vjudge1Bosses (BOI16_bosses)C++17
0 / 100
0 ms604 KiB
// //In His Name // #include <bits/stdc++.h> // using namespace std; // #define ll long long // //#define int ll // typedef pair<int, int> pii; // typedef pair<long long, int> pli; // typedef pair<long long, long long> pll; // #define F first // #define S second // #define bug(x) cout << "Ah shit , here we go again : " << x <<endl // #define all(x) x.begin() , x.end() // #define pb push_back // const int maxn = 5e5 + 10, MOD = 1e9 + 7 , sq = 350; // const ll INF = 1e18; // struct hoom{ // int l , r , w , index; // }; // // int n , m , c[maxn] , vt[2*maxn] , h[maxn] , st[maxn] , fn[maxn] , t = 1 , cnt[200] ; // bool mark[maxn]; // string ans[maxn]; // vector<int> adj[maxn]; // vector<hoom> q; // // bool cmp(hoom a , hoom b){ // return (a.l/sq != b.l/sq ? a.l < b.l : a.r < b.r); // } // // void dfs(int v , int p){ // h[v] = h[p]+1; // st[v] = t; // vt[t] = v; // t++; // for(int u : adj[v]) if(u!=p) dfs(u,v); // fn[v] = t; // vt[t] = v; // t++; // } // // int main(){ // ios_base::sync_with_stdio(false); // // cin >> n >> m; // for(int i = 2 ; i <= n ; i++){ // int u ; // cin >> u; // adj[u].pb(i); // adj[i].pb(u); // } // string s; // cin >> s; // for (int i = 1; i <= n ; ++i) c[i] = int(s[i-1]); // dfs(1,0); // for(int i = 1 ; i <= m ; i++){ // int v , k; // cin >> v >> k; // q.pb({st[v] , fn[v] , k , i}); // } // sort(all(q) , cmp); // int L = 0 , R = 1 , x = 0; // for(hoom i : q){ // int l = i.l , r = i.r , ind = i.index ; // // while(R <= i.r){ // int v = vt[R]; // if(mark[vt[R]]){ // mark[vt[R]] = false; // } // else { // mark[R] = true; // if (h[vt[R]] == i.w) { // cnt[c[vt[R]]]++; // if (cnt[c[vt[R]]] % 2 == 1) x++; // else x--; // } // } // R++; // } // while(L-1 >= i.l){ // L--; // if(mark[vt[L]]){ // mark[vt[L]] = false; // continue; // } // else mark[vt[L]] = true; // if(h[vt[L]] == i.w) { // cnt[c[vt[L]]]--; // if (cnt[c[vt[L]]] % 2 == 1) x++; // else x--; // } // } // while(L+1 <= i.l){ // if(mark[vt[L]]){ // mark[vt[L]] = false; // } // else { // mark[vt[L]] = true; // if (h[vt[L]] == i.w) { // cnt[c[vt[L]]]++; // if (cnt[c[vt[L]]] % 2 == 1) x++; // else x--; // } // } // L++; // } // while(R-1 > i.r){ // R--; // if(mark[vt[R]]){ // mark[vt[R]] = false; // continue; // } // else mark[vt[R]] = true; // if(h[vt[R]] == i.w) { // cnt[c[vt[R]]]--; // if (cnt[c[vt[R]]] % 2 == 1) x++; // else x--; // } // } // ans[i.index] = (x == 1 or x == 0 ? "YES" : "NO"); // } // for(int i = 1 ; i <= m ; i++) cout << ans[i] << "\n"; // } //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 = 5000 + 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); adj2[u].pb(v); } } } 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:167:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
  167 | main(){
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...