Mai intai trebuie sa te autentifici.
Cod sursa(job #2395068)
| Utilizator | Data | 2 aprilie 2019 10:41:01 | |
|---|---|---|---|
| Problema | Stramosi | Scor | 50 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.98 kb |
#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
FILE *f,*g;
struct graf
{
int node,next;
}v[250002];
int start[250002],fr[25002];
int n,m,l,niv;
void read()
{ int x,y,k=0;
fscanf(f,"%d %d",&n,&m);
for(int i=1; i<=n; i++)
{
fscanf(f,"%d",&x);
v[++k].node=x;
v[k].next=start[i];
start[i]=k;
}
}
bool dfs(int nod, int q)
{
if(q==niv || nod==0)
{
fprintf(g,"%d\n",nod);
return true;
}
fr[nod]=l;
for(int i=start[nod]; i ; i=v[i].next)
if(fr[v[i].node]<l)
{
fr[v[i].node]=l;
dfs(v[i].node,q+1);
}
}
void solve()
{ int x;
for(l=1; l<=m; l++)
{
fscanf(f,"%d %d",&x,&niv);
dfs(x,0);
}
}
int main()
{ f = fopen("stramosi.in", "r");
g = fopen("stramosi.out", "w");
read();
solve();
//write();
fclose(f);
fclose(g);
return 0;
}
