Cod sursa(job #2438519)

Utilizator Adrian_Popescu311Popescu Adrian Adrian_Popescu311 Data 12 iulie 2019 17:34:24
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
#include <assert.h>

using namespace std;

#define dim 100010

ifstream fi("bfs.in");
ofstream fo("bfs.out");


vector <long int> G[dim];
queue  <long int> Q;

long int n,m,s;
long int sol[dim];
long int viz[dim];

void bfs(long int nod)
{
    long int node;
    Q.push(nod);

    viz[nod]=1;

    while(!Q.empty())
    {
        node=Q.front();
        Q.pop();

        for(long int i=0;i<G[node].size();i++)
            if(!viz[G[node][i]])
                {viz[G[node][i]]=1;
                sol[G[node][i]]=sol[node]+1;
                Q.push(G[node][i]);}

    }

}

int main()
{
    fi>>n>>m>>s;

    for(long int i=1;i<=m;i++)
    {
        long int x,y;

        fi>>x>>y;

        G[x].push_back(y);
    }

    bfs(s);

    for(long int i=1;i<=n;i++)
        if(i==s)
            fo<<0<<" ";
        else
            if(sol[i]==0)
                fo<<-1<<" ";
            else
                fo<<sol[i]<<" ";



    return 0;
}