Cod sursa(job #1781539)

Utilizator raulrusu99Raul Rusu raulrusu99 Data 16 octombrie 2016 22:49:19
Problema Stramosi Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
#define MAXN 250010
#define MAXM 350010
int n,m,v[MAXM],x,y,stv[MAXM],d,i,stramosi[MAXN],dim[MAXN];
vector <int> G[MAXN],Q[MAXN],rez[MAXN];
void str(int nod)
{
    d++;
    stv[d]=nod;
    for(auto itr:Q[nod])
    {
        x=d-itr;
        if(x>=1)
            rez[nod].push_back(stv[x]);
        else
            rez[nod].push_back(0);
    }
    for(auto it:G[nod])
        str(it);
    d--;
}
int main()
{
    f>>n>>m;
    for(i=1;i<=n;i++)
    {
        f>>x;
        stramosi[i]=x;
        G[x].push_back(i);
    }
    for(i=1;i<=m;i++)
    {
        f>>x>>y;
        v[i]=x;
        Q[x].push_back(y);
    }
    for(i=1;i<=n;i++)
        if(stramosi[i]==0) {
            d=0;
            str(i);
        }
    for(i=1;i<=m;i++)
    {
        g<<rez[v[i]][dim[v[i]]]<<"\n";
        dim[v[i]]++;
    }
    return 0;
}