#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);
return min(v, u);
}
if (i == N - 1) {
auto [u, v] = get(N);
return max(u, v);
}
// 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 time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |