Cod sursa(job #870052)

Utilizator pitradaPit-Rada Ionel-Vasile pitrada Data 2 februarie 2013 19:56:14
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include<stdio.h>

int n,m,start[100002], t[2][1000002];
int s,x,y,i,j;

int coada[100002];
int viz[100002],pr,ul;

int main(){
    freopen("bfs.in","rt",stdin);
    freopen("bfs.out","wt",stdout);
    scanf("%d%d%d",&n,&m,&s);
    for (i=1;i<=n;i++){
        start[i]=0;
        viz[i]=0;
    }
    j=0;
    for (i=1;i<=m;i++){
        scanf("%d%d",&x,&y);
        j++;
        t[0][j]=y;
        t[1][j]=start[x];
        start[x]=j;
    }
    coada[1]=s;
    pr=1;
    ul=1;
    viz[s]=1;
    while(pr<=ul){
        x=coada[pr];
        for(j=start[x];j!=0;j=t[1][j]){
            y=t[0][j];
            if(viz[y]==0){
                ul++;
                coada[ul]=y;
                viz[y]=1+viz[x];
            }
        }
        pr++;
    }
    for (i=1;i<=n;i++){
        if(viz[i]>1&&i!=s){
            printf("%d ",viz[i]-1);
        }
    }
    fclose(stdin);
    fclose(stdout);
    return 0;
}