Cod sursa(job #3231424)

Utilizator engineergamingengineergaming engineergaming Data 26 mai 2024 13:17:26
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

ifstream f("stramosi.in");
ofstream g("stramosi.out");

int viz[250003], st[250003], res[300003];

vector<pair<int, int>> quiz[250003];
vector<int> a[250003];

void dfs(int curr, int k)
{
    st[k] = curr;
    viz[curr] = 1;
    if (quiz[curr].size())
        for (int i = 0; i < static_cast<int>(quiz[curr].size()); i++)
            if (k <= quiz[curr][i].first)
                res[quiz[curr][i].second] = 0;
            else
                res[quiz[curr][i].second] = st[k - quiz[curr][i].first];
    for(auto& vecin : a[curr])
    {
        if (!viz[vecin])
        {
            dfs(vecin,k + 1);
        }
    }
}
int main()
{
    int n, m;
    f>>n>>m;
    for (int i = 1; i <= n; i++)
    {
        int x;
        f>>x;
        if(x)
            a[x].push_back(i);
    }
    for (int i = 1; i <= m; i++)
    {
        int x,y;
        f>>x>>y;
        quiz[x].push_back({y,i});
    }
    for (int i = 1; i <= n; i++)
        if (!viz[i])
            dfs(i,1);

    for (int i = 1; i <= m; i++)
        g<<res[i]<<'\n';
    return 0;
}