#include "migrations.h"
#include <bits/stdc++.h>
using namespace std;
template <typename T>
using v = vector<T>;
using ll = long long;
using pii = pair<int, int>;
#define rep(i, k, n) for (int i = k; i < n; i++)
v<v<int>> adj;
int ans;
int mx;
int L;
void dfs(int n, int d=0, int p=-1) {
if (d > mx) {
mx = d;
ans = n;
}
for (auto x : adj[n]) {
if (x == p) continue;
dfs(x, d+1, n);
}
}
int send_message(int N, int i, int Pi) {
if (i == 1) {
adj.resize(N);
}
adj[i].push_back(Pi);
adj[Pi].push_back(i);
if (i == N-14) {
mx = 0;
dfs(0);
L = ans;
return (L&1);
}
else if (i >= N-13) {
mx = 0;
dfs(0);
if (L != ans) {
L = ans;
return 4;
}
else {
int b = i-(N-14); //
return ((1 << b) & L);
}
}
else return 0;
}
std::pair<int, int> longest_path(std::vector<int> S) {
int N = S.size();
int last4 = -1;
int anss = 0;
int b = 0;
for (int i = N-14; i < N; i++) {
if (S[i] == 4) last4 = i;
else {
if (S[i]) {
anss += (1 << b);
}
}
b++;
}
if (last4 != -1) return {0, last4};
else return {0, ans};
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |