Cod sursa(job #2661233)

Utilizator alexia208160Popescu Alexia Maria alexia208160 Data 21 octombrie 2020 17:09:52
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

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


vector <int> v[100001];
int xx;
int c[100001];
queue<int> q;


void bfs(int x)
{
        for(int i = 0; i < v[x].size(); i++)
        {
            if(c[v[x][i]] == 0 && v[x][i] != xx)
            {
                c[v[x][i]] = c[x] + 1;
                q.push(v[x][i]);
            }
        }
        q.pop();
}


int main()
{
    int n, m, a, b;
    fin >> n >> m >> xx;
    c[xx] = 0;
    for(int i = 0; i < m; i++)
    {
        fin >> a >> b;
        v[a].push_back(b);
    }
    c[xx] = 0;
    q.push(xx);
    while(!q.empty())
        bfs(q.front());
    for(int i = 1; i <= n; i++)
    {
        if(c[i] != 0 || i == xx)
            fout << c[i] <<' ';
        else
            fout << -1 <<' ';
    }
    return 0;
}