Cod sursa(job #652284)

Utilizator BarracudaFMI-Alex Dobrin Barracuda Data 23 decembrie 2011 20:08:09
Problema Stramosi Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<cstdio>
#include<vector>
#define lim 300001
#define pb push_back
using namespace std;
int n,m,q,p,u,i,C[lim],Q,k,x;
vector<int>G[lim];
void cauta(int nod,int k){
	bool viz[lim]={0};
	viz[nod]=1;
	C[1]=nod;
	int nr=0;
	int nd;
	int caut=0;
	p=u=1;
	while(p<=u && nr<k){
		nd=C[p];
		for(int i=0;i<G[nd].size();++i)
			if(!viz[G[nd][i]]){
				C[++u]=G[nd][i];
				viz[G[nd][i]]=1;
				caut=G[nd][i];
				nr++;
			}
		p++;
	}
	printf("%d\n",caut);
}
int main (){
	freopen("stramosi.in","r",stdin);
	freopen("stramosi.out","w",stdout);
	scanf("%d%d",&n,&m);
	for(i=1;i<=n;i++){
		scanf("%d",&x);
		G[i].pb(x);
	}
	for(i=1;i<=m;++i){
		scanf("%d%d",&Q,&k);
		cauta(Q,k);
	}
	return 0;
}