#include "migrations.h"
#include <bits/stdc++.h>
using namespace std;
int n;
int P[10000];
vector<int> g[10000];
int dist[10000] = {0};
void dfs(int u, int p = -1)
{
if (p == -1) dist[u] = 0;
for (int v : g[u]) if (v != p) {
dist[v] = dist[u] + 1;
dfs(v, u);
}
}
int prev_a, prev_b;
int a, b;
void find_diameter()
{
prev_a = a;
prev_b = b;
a = b = 0;
dfs(0);
for (int i = 0; i < n; i++)
if (dist[i] > dist[a])
a = i;
// dfs(a);
// for (int i = 0; i < n; i++)
// if (dist[i] > dist[b])
// b = i;
}
int send_message(int N, int i, int Pi)
{
n = N;
g[i].push_back(Pi);
g[Pi].push_back(i);
if (i == N - 2) {
find_diameter();
return a >> 4;
}
if (i == N - 1) {
find_diameter();
if (a == N - 1)
return 0;
else
return a & 0b1111;
}
return 0;
}
std::pair<int, int> longest_path(std::vector<int> S)
{
if (S.back() == 0)
return {0, S.size() - 1};
return {0, (S[S.size() - 2] << 4) || S.back()};
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |