Cod sursa(job #626955)

Utilizator Mirc100Mircea Octavian Mirc100 Data 28 octombrie 2011 17:52:52
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <queue>
#include<stdio.h>
using namespace std;

int d[100000],n,m,s,viz[100000];
vector<int> l[100000]; 
int main(){
     FILE *f;
     int i,x,y;
     queue<int> c;
     f=fopen("bfs.in","r");
     fscanf(f,"%d %d %d",&n,&m,&s);
     for(i=0;i<m;i++){
         fscanf(f,"%d %d",&x,&y);
         l[x-1].push_back(y-1);
     }
     fclose(f);
     for(i=0;i<n;i++)
        d[i]=-1;
     s--;
     c.push(s);
     d[s]=0;
     viz[s]=1;
     while(c.size()>0){
         x=c.front();
         c.pop();
         for(i=0;i<l[x].size();i++)
              if(viz[l[x][i]]==0){
                  c.push( l[x][i]);
                  viz[l[x][i]]=1;
                  d[l[x][i]]=d[x]+1;
              } 
     }                                  
     f=fopen("bfs.out","w");
     for(i=0;i<n;i++)
        fprintf(f,"%d ",d[i]);
     fclose(f);   
     return 0;   
}