Submission #1251634

#TimeUsernameProblemLanguageResultExecution timeMemory
1251634yeyso2Migrations (IOI25_migrations)C++20
0 / 100
0 ms408 KiB
#include "migrations.h"
#include <bits/stdc++.h>
using namespace std;
vector<int> p;
void dfs(int u, vector<vector<int>> &adj, vector<int> &dist)
{
    for (int v : adj[u])
    {
        dist[v] = dist[u] + 1;
        dfs(v, adj, dist);
    }
}
int send_message(int N, int i, int Pi)
{
    if (i == 1)
    {
        p.resize(N, 0);
    }
    p[i] = Pi;
    return Pi;
}

pair<int, int> longest_path(vector<int> S)
{
    for (int i = 0; i < S.size(); i++){
        //cout << S[i] << " ";
    }
    int N = S.size();

    vector<vector<int>> adj(N, vector<int>());
    for (int i = 1; i < (int)p.size(); i++){
        adj[p[i]].push_back(i);
    }
    /*for (int i = 0; i < (int)adj.size(); i++){
        cout << i << " : ";
        for (int j = 0; j < (int)adj[i].size(); j++)
        {
            cout << adj[i][j] << " ";
        }
        cout << "\n";
    }*/
    vector<int> dist(N, 0);
    dfs(0, adj, dist);
    int max_dist = 0;
    for (int i = 0; i < (int)dist.size(); i++)
    {
        if (dist[i] > dist[max_dist])
        {
            max_dist = i;
        }
    }
    vector<int> dist2(N, 0);
    dfs(max_dist, adj, dist2);
    int max_dist2 = 0;
    for (int i = 0; i < (int)dist2.size(); i++){
        if (dist2[i] > dist[max_dist2]){
            max_dist2 = i;
        }
    }
    return {max_dist, max_dist2};
}
/*
g++ -std=gnu++20 -Wall -O2 -pipe -static -g -o main grader.cpp migrations.cpp

6
0 0 2 2 2
*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...