Cod sursa(job #2273808)

Utilizator radumihaisirbuSirbu Radu-Mihai radumihaisirbu Data 31 octombrie 2018 22:39:42
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <bits/stdc++.h>

using namespace std;

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

vector <int> v[100001];

queue <int> q;

int dist[100001], i, j, n, m, S;

void BFS ()
{
    vector <int> :: iterator i;

    int nod;

    dist[S] = 1;
    q.push(S);
    while(!q.empty())
    {
        nod = q.front();
        for (i=v[nod].begin(); i!=v[nod].end(); i++)
            if (dist[*i] == 0 || dist[nod] + 1 < dist[*i])
            {
                dist[*i] = dist[nod] + 1;
                q.push(*i);
            }
        q.pop();
    }
}

int main()
{
    fin >> n >> m >> S;
    while(m--)
    {
        fin >> i >> j;
        v[i].push_back(j);
    }
    BFS();
    for (i=1; i<=n; i++)
        if (dist[i] == 0)
        {
            fout << -1 << " ";
        }
        else
        {
            fout << dist[i] - 1 << " ";
        }
    return 0;
}