Cod sursa(job #1165049)

Utilizator denisx304Visan Denis denisx304 Data 2 aprilie 2014 13:57:22
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <fstream>
#include <queue>
#include <vector>
#include <iostream>
using namespace std;

int cost[100001], n, m, s;
bool viz[100001];
queue <int> my_queue;
vector <int> graf[100001];

ifstream f("bfs.in");
ofstream g("bfs.out");

int main()
{
    f >> n >> m >> s;
    for (int i = 1; i <= n; i ++)
    {
        viz[i] = false;
        cost[i] = -1;
    }
    int t1, t2;
    for (int i = 1; i <= m; i ++)
    {
        f >> t1 >> t2;
        graf[t1].push_back(t2);
    }
    my_queue.push(s);
    viz[s] = true;
    cost[s] = 0;
    int temp;
    while (!my_queue.empty())
    {
        temp = my_queue.front();
        my_queue.pop();
        for (int i = 0; i < graf[temp].size(); i ++)
            if (!viz[graf[temp][i]])
            {
                my_queue.push(graf[temp][i]);
                viz[graf[temp][i]] = true;
                cost[graf[temp][i]] = cost[temp] + 1;
            }
    }
    for (int i = 1; i <= n; i ++)
        g << cost[i] << " ";
    f.close();
    g.close();
    return 0;
}