Cod sursa(job #842341)

Utilizator monica11Szekely Monica monica11 Data 26 decembrie 2012 18:08:21
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include<cstdio>
#include<vector>
#include<algorithm>
#include<queue>
using namespace std;
#define BM 100005
#define mare (1<<30)
typedef vector<int>::iterator it;
vector<int> g[BM];
queue<int> c;
int n,m,s,rez[BM];
void bfs(){
    for(;c.size();c.pop()){
        int f=c.front();
        for(it ii=g[f].begin();ii!=g[f].end();++ii){
            if(rez[*ii]==mare){
                rez[*ii]=rez[f]+1;
                c.push(*ii);
            }
        }
    }
}
int main () {
    int i,a,b;
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);
    scanf("%d %d %d",&n,&m,&s);
    for(;scanf("%d %d",&a,&b)!=-1;){
        g[a].push_back(b);
    }
    for(i=1;i<=n;++i)rez[i]=mare;
    rez[s]=0;
    c.push(s);
    bfs();
    for(i=1;i<=n;++i)
        if(rez[i]==mare)printf("-1 ");
        else printf("%d ",rez[i]);
    return 0;
}