Cod sursa(job #1703027)

Utilizator marinaflommarina florentina marinaflom Data 16 mai 2016 00:54:13
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>

using namespace std;

vector <int> G[100010];
int N, M, startNode;
int rez[100010];

void Read()
{
    ifstream f("bfs.in");
    f >> N >> M >> startNode;
    for (int i = 1; i <= M; ++ i)
    {
        int x, y;
        f >> x >> y;
        G[x].push_back(y);
    }
    f.close();
}

void Solve()
{
    for(int i = 1; i <= N; ++ i)
        rez[i] = -1;
    rez[startNode] = 0;
    queue<int> Q;
    Q.push(startNode);
    while(!Q.empty())
    {
        int nodExtras = Q.front();
        Q.pop();
        for (vector <int> :: iterator it = G[nodExtras].begin(); it != G[nodExtras].end(); ++ it)
        {
            if (rez[*it] == -1)
            {
                rez[*it] = rez[nodExtras] + 1;
                Q.push(*it);
            }
        }
    }
}


void Write()
{
    ofstream g("bfs.out");
    for (int i = 1; i <= N; ++ i)
        g << rez[i] << " ";
    g << "\n";
    g.close();
}

int main()
{
    Read();
    Solve();
    Write();
    return 0;
}