Submission #1286820

#TimeUsernameProblemLanguageResultExecution timeMemory
1286820eri16Migrations (IOI25_migrations)C++20
16 / 100
31 ms1024 KiB
#include <bits/stdc++.h>
using namespace std;

vector <int> v[20001];

int T,J;

pair<int,int> bfs(int node, int mx){
    
    int n=mx;
    
    vector<int> dist(n, -1);
    
    queue<int> q;

    dist[node]=0;
    q.push(node);

    int f=node;

    while (!q.empty()) {
        int t=q.front();
        q.pop();

     for (int i=0; i<v[t].size(); i++) {
        int to=v[t][i];
        if (dist[to]==-1) {
            dist[to]=dist[t]+1;
            q.push(to);
            if (dist[to]>dist[f])
                f=to;
        }}}
    return {f,dist[f]};
}


int send_message(int N, int i, int Pi){
    if (i<N-2){
        v[i].push_back(Pi);
        v[Pi].push_back(i);
        return 0;
    }
    else if(i==N-2){
        v[i].push_back(Pi);
        v[Pi].push_back(i);
        pair <int,int> p;
        p=bfs(0,N-1);
        T=p.first;
        J=p.second;
        return (T-1);
    }
    else{
        
        
        pair<int,int> p;
        int len=J;
        
        v[i].push_back(Pi);
        v[Pi].push_back(i);
        
        p=bfs(0,N);
        T=p.second;
        if (J>=T){
            return 0;
        }
        else{
            return 1;
        }
    }
}

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