Submission #1287379

#TimeUsernameProblemLanguageResultExecution timeMemory
1287379kawhietMigrations (IOI25_migrations)C++20
0 / 100
31 ms1208 KiB
#include <bits/stdc++.h> #include "migrations.h" using namespace std; vector<int> g[10001]; vector<int> d; vector<bool> vis; void dfs(int u) { vis[u] = 1; for (auto v : g[u]) { if (!vis[v]) { d[v] = d[u] + 1; dfs(v); } } } pair<int, int> get(int N) { d.assign(N, 0); vis.assign(N, false); dfs(0); int u = d.size() - 1 - (max_element(d.rbegin(), d.rend()) - d.rbegin()); d.assign(N, 0); vis.assign(N, false); dfs(u); int v = d.size() - 1 - (max_element(d.rbegin(), d.rend()) - d.rbegin()); return {v, u}; } int x = 0, y = 0; int send_message(int N, int i, int Pi) { g[i].push_back(Pi); g[Pi].push_back(i); if (i == N - 2) { auto [v, u] = get(N); x = u, y = v; return u; } if (i == N - 1) { auto [u, v] = get(N); if (x == u) { return v; } else { return u; } } // if (i == N - 1) { // auto [_, u] = get(N); // return u - x; // } // if (N - i <= 50) { // auto [_, u] = get(N); // if (u - x >= 202) { // x += 202; // return 101; // } else if (u - x >= 100) { // x += 100; // return 100; // } else { // int ret = u - x; // x = u; // return ret; // } // } return 0; } pair<int, int> longest_path(vector<int> S) { int n = S.size(); return {S[n - 2], S[n - 1]}; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...