Cod sursa(job #1700016)

Utilizator NastureNasture Anca Nasture Data 9 mai 2016 09:21:13
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 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;
    viz[s]=1;
    while(!coada.empty()){
        primul=coada.front();
        coada.pop();

        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);
                viz[nod]=1;
            }
        }

    }

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