Cod sursa(job #2130682)

Utilizator RG1999one shot RG1999 Data 13 februarie 2018 20:27:34
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <bits/stdc++.h>

using namespace std;
int x,a,b,i,viz[100001],n,m,nd,dst[100001];
queue <int> q;
vector <int> ar[100001];
int main()
{
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);
    scanf("%d%d%d",&n,&m,&x);
    for(i=1;i<=m;i++)
    {
        scanf("%d%d",&a,&b);
        ar[a].push_back(b);
    }
    q.push(x);
    viz[x]=1;
    while(!q.empty())
    {
        nd=q.front();
        q.pop();
        for(i=0;i<ar[nd].size();i++)
            if(!viz[ar[nd][i]])
        {
            viz[ar[nd][i]]=1;
            q.push(ar[nd][i]);
            dst[ar[nd][i]]=dst[nd]+1;
        }
    }
    for(i=1;i<=n;i++)
        if(i==x) printf("0 ");
    else
        if(dst[i]==0) printf("-1 ");
    else
        printf("%d ",dst[i]);
    return 0;
}