Cod sursa(job #2096558)

Utilizator AlexVulpoiuAlexandru Vulpoiu AlexVulpoiu Data 29 decembrie 2017 13:53:24
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <cstdio>
#include <vector>
using namespace std;
vector <int> a[100000];
vector <int>::iterator it;
int n,m,i,j,nod,b[100001],c[100001];
int main()
{
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);
    scanf("%d %d %d\n",&n,&m,&nod);
    while(m)
    {
        scanf("%d %d\n",&i,&j);
        if(i!=j)
            a[i].push_back(j);
        m--;
    }
    for(i=1;i<=n;i++)
        c[i]=100001;
    m=i=1;
    b[1]=nod;
    c[nod]=0;
    while(i<=m)
    {
        for(it=a[b[i]].begin();it!=a[b[i]].end();it++)
        {
            j=*it;
            if(c[b[i]]+1<c[j])
            {
                c[j]=c[b[i]]+1;
                b[++m]=j;
            }
        }
        i++;
    }
    for(i=1;i<=n;i++)
        if(c[i]==100001)
            printf("-1 ");
        else
            printf("%d ",c[i]);
    printf("\n");
    return 0;
}