Cod sursa(job #563670)

Utilizator paul_gabryelPaul Buda paul_gabryel Data 25 martie 2011 18:01:03
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb

#include <cstdio>
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

#define N 100001

vector<vector<int> > v(N);
queue<int> q;
int n,m,start;
int a[N];

void bfs (int x){

    a[x]=1;
    for(q.push(x);!q.empty();q.pop()){
        int y=q.front();
        for(vector<int>::iterator it=v[y].begin();it<v[y].end();++it)
            if(a[(*it)]==0){
            a[(*it)]=a[y]+1;
            q.push((*it));
        }
    }

}

int main ()
{

    ifstream in ("bfs.in");
    in>>n>>m>>start;
    for(;m;--m){
    int x,y;
    in>>x>>y;
    if(x!=y)
    v[x].push_back(y);
    }
    bfs (start);
    freopen ("bfs.out","w",stdout);
    for(int i=1;i<=n;++i)
    printf("%d ",a[i]-1);
    printf("\n");

return 0;}