Cod sursa(job #2076775)

Utilizator toadehuPuscasu Razvan Stefan toadehu Data 27 noiembrie 2017 09:10:44
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <bits/stdc++.h>

#define Nmax 100111

using namespace std;

int n,m,q[Nmax],viz[Nmax],d[Nmax],s;

vector<int> adj[Nmax];

void bfs (int nod)
{
    int st=1,dr=1;
    q[1]=s;
    d[s]=0;
    while (st-dr+1>0)
    {
        int nod=q[st];
        ++st;
        for (int i=0;i<adj[nod].size();++i)
        {
            if ((d[adj[nod][i]]==-1) || (d[adj[nod][i]]>d[nod]+1))
            {
                d[adj[nod][i]]=d[nod]+1;
                ++dr;
                q[dr]=adj[nod][i];
            }
        }
    }
}

int main()
{
    ifstream fin ("bfs.in");
    ofstream fout ("bfs.out");
    fin>>n>>m>>s;
    for (int i=1;i<=m;++i)
    {
     int a,b;
     fin>>a>>b;
     adj[a].push_back(b);
    }
    bfs(s);
    for (int i=1;i<=n;++i)
    {
        fout<<d[i]-1<<" ";
    }
}