Cod sursa(job #1758015)

Utilizator KOzarmOvidiu Badea KOzarm Data 16 septembrie 2016 11:59:58
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
#include <vector>
#include <deque>
using namespace std;

ifstream fin("bfs.in");
ofstream fout("bfs.out");

vector <int> G[100005];
deque <int> d;

bool viz[100005];
int a[100005];
int n,m,s;


void bfs(int s)
{
    d.push_back(s);
    viz[s]=1;
    while(d.size())
    {
        int p = d.front();
        d.pop_front();
        for(int i = 0; i<G[p].size(); i++)
        if(viz[G[p][i]] == 0)
        {
            d.push_back(G[p][i]);
            viz[G[p][i]]=1;
            a[G[p][i]]=a[p]+1;
        }
    }
}

int main()
{
    fin >> n >> m >> s;
    for (int i = 1; i <= m; i++)
    {
        int a,b;
        fin >> a >> b;
        G[a].push_back(b);
    }
    bfs(s);
    for(int i = 1; i <=n; i++)
    if(viz[i]==1)
        fout << a[i] << " ";
    else
        fout << "-1 ";
    return 0;
}