Submission #1303470

#TimeUsernameProblemLanguageResultExecution timeMemory
1303470nikoloz-ch이주 (IOI25_migrations)C++20
0 / 100
28 ms952 KiB
#include <bits/stdc++.h>
using namespace std;

int p[10001];
vector<vector<int>> a;
vector<int> v;
void dfs(int u, int k, int cnt){
    v[u] = cnt;
    for(int e : a[u]) if(e != k) dfs(e, u, cnt + 1);
}
int ml = 1;
int send_message(int N, int i, int Pi) {
    p[i] = Pi;
    if(i >= N - 2){
        a.assign(N + 1, {}); v.assign(N + 1, 0);
        for(int j = 1; j <= N; j++){a[p[j]].push_back(j);}
        dfs(0, -1, 0); int mx = 1;
        for(int j = 2; j <= N; j++) if(v[j] > v[mx]) mx = j;
        if(mx != ml) return 101;
        ml = mx;
        if(i == N-1){
            return ml % 100;
        }
        return ml/100;
    }
    return 0;
}

pair<int, int> longest_path(vector<int> S){
    int ans = S[S.size()-2]*100+S.back(); string c = to_string(ans);
    if(S.back() == 101) return {0, S.size()-1};
    return {0, stoi(c)};
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...