Cod sursa(job #1700010)

Utilizator NastureNasture Anca Nasture Data 9 mai 2016 08:50:42
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include<cstdio>
#include<vector>
#include<queue>
#include<cstring>
using namespace std;
vector <int> L[100001];
queue <int> coada;
int n,s,viz[100001];
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;
    memset(viz,-1,sizeof(viz));
    viz[s]=1;
    while(!coada.empty()){
        primul=coada.front();
        vector <int>:: iterator it;
        for(it=L[primul].begin();it!=L[primul].end();++it){
            nod=*it;
            if(viz[nod]==-1){
                viz[nod]=viz[primul]+1;
                coada.push(nod);
            }
        }
        coada.pop();
    }

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