Cod sursa(job #1169604)

Utilizator RazvanR104Razvan-Andrei Ciocoiu RazvanR104 Data 11 aprilie 2014 18:38:25
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.26 kb
#include <fstream>

#include <algorithm>
#include <bitset>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <utility>
#include <vector>

#if __cplusplus > 199711L
#include <unordered_map>
#include <unordered_set>
#endif

#include <cmath>
#include <cstring>
#include <cstdlib>

using namespace std;

int N, M, S;
vector<int> Graph[100010];
queue<int> Q;
bool visited[100010];
int d[100010];

int main()
{
    int i, x, y, node;
    vector<int>::iterator it;

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

	fin >> N >> M >> S;

	for (i = 0; i < M; ++i)
    {
        fin >> x >> y;
        Graph[x].push_back(y);
    }

    Q.push(S);
    visited[S] = true;

    while(!Q.empty())
    {
        node = Q.front();
        Q.pop();

        for (it = Graph[node].begin(); it != Graph[node].end(); ++it)
        {
            if (!visited[*it])
            {
                d[*it] = d[node] + 1;
                visited[*it] = true;
                Q.push(*it);
            }
        }
    }


    for (i = 1; i <= N; ++i)
    {
        if (visited[i])
            fout << d[i] << ' ';
        else fout << "-1 ";
    }
    fout << '\n';
	fout.close();
    return 0;
}