Submission #1267745

#TimeUsernameProblemLanguageResultExecution timeMemory
1267745nerrrminMigrations (IOI25_migrations)C++20
30 / 100
814 ms1424 KiB
#include "migrations.h" #include<bits/stdc++.h> #define pb push_back using namespace std; const int maxn = 1e4 + 10; int n; vector < int > g[maxn]; int depth[maxn], recent, mx, best, still; void dfs(int beg, int from, int dist) { depth[beg] = dist; if(mx < depth[beg]) { mx = dist; best = beg; } for (auto nb: g[beg]) { if(nb == from)continue; dfs(nb, beg, dist+1); } } int bit = 0; int send_message(int N, int i, int Pi) { n = N; g[Pi].pb(i); g[i].pb(Pi); dfs(0, -1, 0); if(i == n-20) { recent = best; still = 1; int is = min(1, ((1 << bit) & recent)); bit ++; return is; } else if(i > n-20) { if(best != recent && best == i) { still = 0; return 2; } else if(!still)return 0; else { int is = min(1, ((1 << bit) & recent)); bit ++; return is; } } else return 0; } std::pair<int, int> longest_path(std::vector<int> S) { n = S.size(); std::pair < int, int > p; int last = 0; for (int i = n-20; i < n; ++ i) { if(S[i] == 2) last = i; } if(last == 0) { int b = 0; for (int i = n-20; i < n; ++ i) { last += ((1 << b)) * S[i]; b ++; } } return make_pair(0, last); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...