Cod sursa(job #632223)

Utilizator Viva12Ferentz Sergiu Viva12 Data 10 noiembrie 2011 16:53:34
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.23 kb
#include <cstdio>
#define N 100000
using namespace std;
int n,m,s;
struct nod
{
    int inf;
    nod *urm;
}*l[N];
void add(int x,nod *&p)
{
    nod *q=new nod;
    q->inf=x;
    q->urm=p;
    p=q;
}
void read()
{   int x,y;
    scanf("%d %d %d",&n,&m,&s);
        for(int i=1;i<m;i++)
            {
                scanf("%d %d",&x,&y);
                add(y,l[x]);
            }

}
struct c
{
    int val;
    int cost;
}coada[2*N];
int viz[N];
void bfs()
{
    int st=1;
    int fn=1;
    coada[fn++].val=s;
    viz[s]=1;
        for(int i=1;i<=fn;i++)
            {
                for(nod *j=l[coada[i].val];j;j=j->urm)
                    {
                        if(!viz[j->inf])
                            {
                                coada[fn++].val=j->inf;
                                viz[j->inf]=viz[coada[i].val]+1;
                            }
                    }
                st++;
            }
}
void afis()
{
    for(int i=1;i<=n;i++)
        {
            printf("%d ",viz[i]-1);
        }
}
int main()
{   freopen("bfs.in","r",stdin);
    freopen("bfs.out", "w",stdout);
    freopen("bfs.out", "w",stdout);
    read();
    bfs();
    afis();
    return 0;
}