Cod sursa(job #833814)

Utilizator ard_procesoareLupicu ard_procesoare Data 13 decembrie 2012 08:55:58
Problema Stramosi Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
//#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
#define NMAX 250002
vector <int> v[NMAX];
int n,m,z,d[NMAX],bun;
bool viz[NMAX];
void init()
{
    int i;n++;
    for(i=1;i<n;i++)
    {
        d[i]=0; //sterge
        viz[i]=false;
    }
    n--;
}
void read()
{
    int i,a;
    fin>>n>>m;
    n++;
    for(i=1;i<n;i++)
    {
        fin>>a;
        if(a)
        {
            v[i].push_back(a);
            viz[a]=true;
        }
    }
    for(i=1;i<n;i++)
        if(viz[i]==false)
        {
            z=i;
            n--;
            return;
        }
    n--;
}
void dfs(int nod)
{
    if(d[nod]==bun)
    {
        fout<<nod<<"\n";
        bun=-1;
        return;
    }
    viz[nod]=true;
    int i;
    for(i=0;i<v[nod].size();i++)
    {
        if(viz[v[nod][i]]==false)
        {
            d[v[nod][i]] = d[nod]+1;
            dfs(v[nod][i]);
        }
    }
}
void solve()
{
    int a,i;
    for(i=0;i<m;i++)
    {
        fin>>a>>bun;
        init();
        d[a]=0;
        dfs(a);
        if(bun!=-1) fout<<"0\n";
    }
}
int main()
{
    read();
    solve();
}