Cod sursa(job #605877)

Utilizator valentin.harsanValentin Harsan valentin.harsan Data 2 august 2011 16:08:57
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <iostream>
#include<fstream>
#include<vector>
#include<queue>
#define N 100001
using namespace std;

ifstream in("bfs.in");
ofstream out("bfs.out");

int n,m,s,x[N],q[N],p=1,u;
vector<int> g[N];

void bfs() {
    int i;

    q[++u]=s;
    x[s]=0;

    while(p<=u) {
        for(i=0; i!=g[q[p]].size() ; ++i)
            if(x[ g[ q[p] ][i]] == -1) {
                x[g[ q[p] ][i]]=1+x[q[p]];
                q[++u]=g[q[p]][i];
            }

        ++p;
    }

}

int main() {
    int i,a,b;

    in >> n >> m >> s;

    for(i=1;i<=m;++i) {
        in >> a >> b;

        if(a==b)
            continue;

        g[a].push_back(b);
    }

    for(i=1;i<=n;++i)
        x[i]=-1;

    bfs();

    for(i=1;i<=n;++i)
        out << x[i] << " ";

    return 0;
}