Cod sursa(job #2476398)

Utilizator RedXtreme45Catalin RedXtreme45 Data 18 octombrie 2019 19:39:31
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>
#include <vector>
using namespace std;
int n,m,s,v1[100001],c[100001];
ifstream fin("bfs.in");
ofstream fout("bfs.out");
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;
    fin>>n>>m>>s;
    for (i=1;i<=m;i++)
    {
        fin>>a>>b;
        v[a].push_back(b);
    }
    BFS();
    for (i=1;i<=n;i++)
    {
        if (v1[i]!=0)
            fout<<v1[i]<<" ";
        else
        {
            if (i==s)
                fout<<0<<" ";
            else
                fout<<-1<<" ";
        }
    }
    return 0;
}