Cod sursa(job #3137135)

Utilizator Luca529Taschina Luca Luca529 Data 11 iunie 2023 14:02:02
Problema Stramosi Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
vector<int> x[250001];
vector<pair<int, int> > v[250001];
int y[250001], T[250001], sol[300001];

int DFS(int nod, int k)
{y[k]=nod;
 for(int i=0;i<v[nod].size();i++)
 sol[v[nod][i].second]=y[k-v[nod][i].first];

 vector<int>:: iterator I;
 for(I=x[nod].begin();I<x[nod].end();I++)
 DFS(*I, k+1);
}

int main()
{   int n, m, a, b;
    fin>>n>>m;
    for(int i=1;i<=n;i++)
    {fin>>T[i];
     x[T[i]].push_back(i);
    }

    for(int i=1;i<=m;i++)
    {fin>>a>>b;
     v[a].push_back({b, i});
    }

    DFS(0, 1);
    for(int i=1;i<=m;i++)
    fout<<sol[i]<<"\n";
    return 0;
}