Cod sursa(job #2476397)

Utilizator RedXtreme45Catalin RedXtreme45 Data 18 octombrie 2019 19:38:36
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <vector>
using namespace std;
int n,m,s,v1[100001],c[100001];
vector <int > v[100001];
bool ap[100001];
void BFS()
{
    int p=1,u=1;
    c[1]=s;
    ap[s]=1;
    while (p<=u)
    {
        for (vector <int>::iterator it=v[c[p]].begin();it!=v[c[p]].end();++it)
        {
            if (ap[*it]==0)
            {
                ap[*it]=1;
                u++;
                c[u]=*it;
                v1[*it]=v1[c[p]]+1;
            }
        }
        p++;
    }
}
int main()
{
    int i,a,b;
    cin>>n>>m>>s;
    for (i=1;i<=m;i++)
    {
        cin>>a>>b;
        v[a].push_back(b);
    }
    BFS();
    for (i=1;i<=n;i++)
    {
        if (v1[i]!=0)
            cout<<v1[i]<<" ";
        else
        {
            if (i==s)
                cout<<0<<" ";
            else
                cout<<-1<<" ";
        }
    }
    return 0;
}