Pagini recente » Cod sursa (job #179576) | Cod sursa (job #1893055) | Cod sursa (job #133305) | Cod sursa (job #464383) | Cod sursa (job #2610774)
#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;
}