Submission #1287409

#TimeUsernameProblemLanguageResultExecution timeMemory
1287409kawhiet이주 (IOI25_migrations)C++20
0 / 100
32 ms1224 KiB
#include <bits/stdc++.h> #include "migrations.h" using namespace std; constexpr int mxn = 1e5 + 1; vector<int> g[mxn]; 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 {u, v}; } 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 [u, v] = get(N); x = u; y = v; return x; } if (i == N - 1) { auto [u, v] = get(N); if (x == u && y == v) { return y; } if (v == 9999) { return u; } else { return v; } } return 0; } pair<int, int> longest_path(vector<int> S) { int N = S.size(); if (S[N - 1] == S[N - 2]) { return {S[N - 2], 9999}; } else { return {S[N - 1], S[N - 2]}; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...