Cod sursa(job #2610774)

Utilizator VladTZYVlad Tiganila VladTZY Data 5 mai 2020 17:17:11
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <fstream>
#include <vector>
#include <stack>

#define NODES 100005

using namespace std;

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

int nodes, connections, my_node, x, y;
int saw[NODES], solution[NODES];

vector <int> v[NODES];
stack < pair <int, int> > my_stack;

int main()
{
    f >> nodes >> connections >> my_node;

    for(int i = 1; i <= connections; i++)
        f >> x >> y, v[x].push_back(y);

    my_stack.push(make_pair(my_node, 0));
    saw[my_node] = 1;

    while(!my_stack.empty())
    {
        int node_now = my_stack.top().first;
        int level_now = my_stack.top().second;

        solution[node_now] = level_now;

        my_stack.pop();

        for(int i = 0; i < v[node_now].size(); i++)
            if(!saw[v[node_now][i]])
                my_stack.push(make_pair(v[node_now][i], level_now + 1)), saw[i] = 1;

    }

    for(int i = 1; i <= nodes; i++)
        if(i != my_node && solution[i] == 0)
             g << "-1 ";
        else
            g << solution[i] << " ";
    return 0;
}