Cod sursa(job #614819)

Utilizator Luncasu_VictorVictor Luncasu Luncasu_Victor Data 7 octombrie 2011 19:02:59
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include<stdio.h>
int n,m,s;
struct Stiv{
   int y;
    struct Stiv*dir;
} *v[100001];
bool viz[100001];
int C[100001];

void push(int x,int y){
    Stiv*b;
    b=new Stiv;
    b->y=y;
    b->dir=v[x];
    v[x]=b;
}

void bfs(){
    viz[s]=1;
    Stiv*a,*b,*c,*d;
    a=new Stiv; a->y=s; a->dir=NULL; b=a;
    while(a!=NULL){
        c=v[a->y];
        while(c!=NULL){
        if(!viz[c->y]){
            d=new Stiv; d->y=c->y; d->dir=NULL; b->dir=d; b=d;
            C[d->y]=C[a->y]+1; };
            d=c; c=c->dir; delete d;};
        d=a; a=a->dir; delete d; };
}

int main(){
    int i,x,y;
    Stiv*b;
        freopen("bfs.in","r",stdin);
        freopen("bfs.out","w",stdout);
        scanf("%d%d%d",&n,&m,&s);
        for(i=1;i<=m;i++){
            scanf("%d%d",&x,&y);
            push(x,y); };
        parcurg();
        for(i=1;i<=n;i++)
        if(C[i]==0&&i!=s)printf("-1 "); else printf("%d ",C[i]);
}