Submission #1303226

#TimeUsernameProblemLanguageResultExecution timeMemory
1303226123123123Migrations (IOI25_migrations)C++20
0 / 100
30 ms1216 KiB
#include <bits/stdc++.h>
using namespace std;
int p[10001], fix[100001], ans, curr;
vector <int> v[10001];
map <int, int> mindist;
int send_message(int N, int i, int Pi)
{
    p[i] = Pi;
    
    if(i == N - 1)
    {
        ans = -1;
        
        for(i = N - 1; i >= 0; i--)
        {
            v[p[i]].push_back(i);
        }
        
        for(i = 0; i < N; i++)
        {
            mindist[i] = 0;
            fix[i] = 0;
        }
        
        queue <int> q;
        
        q.push(0);
        fix[0] = 1;
        
        while(q.size() != 0)
        {
            curr = q.front();
            q.pop();
            
            for(i = 0; i < v[curr].size(); i++)
            {
                if(fix[v[curr][i]] == 0)
                {
                    if(mindist[v[curr][i]] != 0) mindist[v[curr][i]] = min(mindist[v[curr][i]], mindist[curr] + 1);
                    else mindist[v[curr][i]] = mindist[curr] + 1;
                }
            }
        }
        
        for(i = 0; i < N; i++)
        {
            ans = max(ans, mindist[i]);
        }
        
        return ans;
    }
    
    return 0;
}
pair <int, int> longest_path(vector<int> S) 
{
    return make_pair(0, S.back());
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...