Cod sursa(job #1439611)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 22 mai 2015 20:16:01
Problema BFS - Parcurgere in latime Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.84 kb
#include <stdio.h>
#include <stdlib.h>
#define MAXN 100001
int ind[MAXN],viz[MAXN],next[MAXN],y[MAXN],cod[MAXN];
void BFS(int nod){
     int x,b=0,e=1;
     viz[nod]=1;
     cod[b]=nod;
     do{
        x=cod[b];
        b=(b+1)%MAXN;
        while(ind[x]>0){
             if(viz[y[ind[x]]]==0){
                 viz[y[ind[x]]]=viz[x]+1;
                 cod[e]=y[ind[x]];
                 e=(e+1)%MAXN;
             }
             x=next[x];
        }
     }while(b!=e);
}
int main(){
    FILE*fi,*fout;
    int i,j,n,m,s,nr,x;
    fi=fopen("bfs.in" ,"r");
    fout=fopen("bfs.out" ,"w");
    fscanf(fi,"%d%d%d" ,&n,&m,&s);
    for(i=1;i<=m;i++){
        fscanf(fi,"%d%d" ,&x,&y[i]);
        next[x]=ind[x];
        ind[x]=i;
    }
    BFS(s);
    for(i=1;i<=n;i++)
        fprintf(fout,"%d " ,viz[i]-1);
    fclose(fi);
    fclose(fout);
    return 0;
}