Cod sursa(job #2518452)

Utilizator Groza_Iulia_DianaGroza Iulia Diana Groza_Iulia_Diana Data 5 ianuarie 2020 19:27:54
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <bits/stdc++.h>
typedef long long ll;

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

int n, m, X, x, y, d[100005];
bitset<100005> viz;
vector<int> G[100005];
queue<int> Q;

void bfs(int nod)
{
    Q.push(nod);
    viz[nod]=1;
    while(!Q.empty())
    {
        nod=Q.front();
        vector<int>::iterator it;
        for(it=G[nod].begin(); it!=G[nod].end(); it++)
            if(!viz[*it])
        {
            d[*it]=d[nod]+1;
            viz[*it]=1;
            Q.push(*it);
        }
        Q.pop();
    }
}

int main()
{
    fin >> n >> m >> X;
    for(int i=1; i<=m; i++)
    {
        fin >> x >> y;
        G[x].push_back(y);
    }
    bfs(X);
    for(int i=1; i<=n; i++)
        if(i==X)
            fout << "0 ";
        else
            fout << (!viz[i] ? -1 : d[i]) << " ";
    return 0;
}