Cod sursa(job #2395068)

Utilizator NaritaandreiCNAINarita Andrei NaritaandreiCNAI 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;
}