Cod sursa(job #3132570)

Utilizator NiffSniffCojocaru Calin Marcu NiffSniff Data 23 mai 2023 08:06:19
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <fstream>
#include <vector>
using namespace std;
string file = "stramosi";
ifstream cin (file + ".in");
ofstream cout (file + ".out");

struct query{
    int k, stramos;
};
const int N = 250000;
vector <int> fii[N+1],v;
vector <query> a[N+1];

int raspuns[300001];


void dfs(int x)
{
    for (query niff : a[x])
    {
        //cout << niff.stramos << ' ' << niff.k << '\n';
        if (niff.stramos == 0)
        {
            raspuns[niff.k] = x;
        }
        else if (niff.stramos <= v.size())
        {
            raspuns[niff.k] = v[v.size() - niff.stramos];
        }
    }
    v.push_back(x);
    for (int y : fii[x])
    {
        dfs(y);
    }
    v.pop_back();
}
int main()
{
    int n,m,x,y;
    cin >> n >> m;
    for (int i=1; i<=n; i++)
    {
        cin >> x;
        fii[x].push_back(i);
    }
    for (int i=1; i<=m; i++)
    {
        cin >> x >> y;
        a[x].push_back({i,y});
    }
    for (int tata : fii[0])
        dfs(tata);
    for (int i=1; i<=m; i++)
    {
        cout << raspuns[i] << '\n';
    }
    return 0;
}