Cod sursa(job #1700014)

Utilizator NastureNasture Anca Nasture Data 9 mai 2016 09:15:29
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include<cstdio>
#include<vector>
#include<queue>
#include<cstring>
using namespace std;
vector <int> L[100005];
queue <int> coada;
int n,s,viz[100005],mini[100005];
void citire(){
    int n1,n2,m;
    scanf("%d%d%d",&n,&m,&s);
    for(int i=1;i<=m;i++){
        scanf("%d %d",&n1,&n2);
        L[n1].push_back(n2);
    }
}

int main(){
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);
    citire();
    coada.push(s);
    int primul,nod;
    while(!coada.empty()){
        primul=coada.front();
        viz[primul]=1;
        vector <int>:: iterator it;
        for(it=L[primul].begin();it!=L[primul].end();++it){
            nod=*it;
            if(viz[nod]==0){
                mini[nod]=mini[primul]+1;
                coada.push(nod);
            }
        }
        coada.pop();
    }

    for(int i=1;i<=n;i++)
        if(viz[i]!=0||i==s)
            printf("%d ",mini[i]);
        else
            printf("-1 ");
    return 0;
}