Submission #1269319

#TimeUsernameProblemLanguageResultExecution timeMemory
1269319sula2이주 (IOI25_migrations)C++20
0 / 100
1360 ms2162688 KiB
#include <bits/stdc++.h>
using namespace std;

vector<int> adj[10000];
int X = 0, Y = 0;

pair<int,int> dfs(int u, int p = -1) {
    pair<int,int> res = {0, u};
    for (int v : adj[u]) {
        auto z = dfs(v, u);
        z.first++;
        res = max(res, z);
    }
    return res;
}

int send_message(int N, int i, int Pi) {
    adj[i].push_back(Pi);
    adj[Pi].push_back(i);
    int nX = 0, nY = 0;
    if (i >= N-3) {
        nX = dfs(0).second;
        nY = dfs(0).second;
    }
    int res = 0;
    if (i < N-2) goto NOTHING;
    if (i == N-2) res = X;
    else {
        res = i == nX ? Y + N : Y;
    }
    NOTHING:
    X = nX, Y = nY;
    return res;
}

pair<int,int> longest_path(std::vector<int> S) {
    int n = S.size();
    int u = S[n-2];
    int v = S[n-2];
    if (v >= n) {
        u = v - n;
        v = n-1;
    }
    return {u, v};
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...