Cod sursa(job #1030069)

Utilizator usermeBogdan Cretu userme Data 15 noiembrie 2013 15:44:46
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <cstdio>
#include <vector>
#include <queue>

using namespace std;

queue <int> q;
vector <int> v[100001];

FILE*f=fopen("bfs.in","r");
FILE*h=fopen("bfs.out","w");

int n,m,s,d[100001];

void bfs(){
    int x,y;
    while ( !q.empty() ){
        x=q.front();
        for ( int i=0;i<v[x].size();++i ){
            y=v[x][i];
            if ( d[y]==-1 ){
                d[y]=1+d[x];
                q.push(y);
            }
        }
        q.pop();
    }
}

int main()
{
    fscanf(f,"%d%d%d",&n,&m,&s);
    for ( int i=1;i<=n;++i )
        d[i]=-1;
    for ( int i=1;i<=m;++i ){
            int a,b;
            fscanf(f,"%d%d",&a,&b);
            v[a].push_back(b);
    }
    q.push(s);
    d[s]=0;
    bfs();
    for ( int i=1;i<=n;++i )
        fprintf(h,"%d ",d[i]);
    return 0;
}