제출 #1345816

#제출 시각아이디문제언어결과실행 시간메모리
1345816ElayV13이주 (IOI25_migrations)C++20
0 / 100
548 ms1416 KiB
#include "migrations.h"
#include "bits/stdc++.h"
using namespace std;

vector<int>G[10001];
pair<int,int> mx_dis;
int md[10001];

void dfs(int v,int p,int cur_dis){
      mx_dis=max(mx_dis,{cur_dis,v});
      for(int u:G[v]){
            if(u==p) continue;
            dfs(u,v,cur_dis+1);
      }
}

int send_message(int N,int i,int Pi)
{
      G[i].push_back(Pi);
      G[Pi].push_back(i);
      if(i!=N-1){
            mx_dis={0,i};
            dfs(i,-1,0);
            md[i]=mx_dis.first;
            return mx_dis.second;
      }
      else{
            mx_dis={0,i};
            dfs(i,-1,0);
            md[i]=mx_dis.first;
            int cur_mx=0;
            for(int i=1;i<N;i++) cur_mx=max(cur_mx,md[i]);
            for(int i=1;i<N;i++){
                  if(cur_mx==md[i]&&i!=N-1) return i;
                  else if(cur_mx==md[i]&&i==N-1) return mx_dis.second+10000;
            }
            return 0;
      }
}
pair<int,int>longest_path(vector<int>S)
{
      S[0]=0;
      int n=S.size();
      if(S[n-1]<10000) return {S[n-1],S[S[n-1]]};
      else return {n-1,S[n-1]-10000};
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...