Pagini recente » Cod sursa (job #1485125) | Cod sursa (job #2545465) | Cod sursa (job #478357) | Cod sursa (job #175156) | Cod sursa (job #1703027)
#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;
}