Cod sursa(job #2086899)

Utilizator Cristi_ChiraChira Cristian Cristi_Chira Data 12 decembrie 2017 17:42:41
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#define dm 10005
#define x first
#define y second
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n, m;
vector <int> graf[dm];
pair<int, int> aux;
queue <int> q;
int dist[dm], k;
void bfs(int start)
{
    int x;
    q.push(start);
    x = start;
    while(!q.empty()){
        x = q.front();
        q.pop();
        for(int i = 0; i < graf[x].size(); i++)
            if(graf[x][i] != x && !dist[graf[x][i]])
            {
                dist[graf[x][i]] = dist[x] + 1;
                q.push(graf[x][i]);
            }
    }
}
int main()
{
    fin >> n >> m >> k;
    for(int i = 1; i <= m; i++)
    {
        fin >> aux.x >> aux.y;
        if(aux.x != aux.y)
            graf[aux.x].push_back(aux.y);
    }
    bfs(k);
    for(int i = 1; i <= n; i++)
    {
        if(!dist[i] && i!=k)
            fout << -1 << " ";
        else if (i == k)
            fout << 0 << " ";
        else
            fout << dist[i] << " ";

    }
    return 0;
}