Pagini recente » Cod sursa (job #2473532) | Cod sursa (job #1411236) | Cod sursa (job #1463247) | Cod sursa (job #1032139) | Cod sursa (job #2636069)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
vector<int> arches[1000002];
queue<int> next_arch;
int N, M, S,visited[1000002], distance_arches[1000002];
fstream fin;
ofstream fout;
void read()
{
fin >> N >> M >> S;
for (int i = 1;i <= M;i++)
{
int a,b;
fin >> a >> b;
arches[a].push_back(b);
}
}
void BFS()
{
visited[S] = 1;
next_arch.push(S);
while (!next_arch.empty())
{
int node = next_arch.front();
next_arch.pop();
for(int i=0;i<arches[node].size();i++)
if (!visited[arches[node][i]])
{
distance_arches[arches[node][i]] = distance_arches[node] + 1;
visited[arches[node][i]] = 1;
next_arch.push(arches[node][i]);
}
}
}
void print()
{
for (int i = 1;i <= N;i++)
if (distance_arches[i] == 0 && i != S)
fout << "-1 ";
else
fout << distance_arches[i]<<" ";
}
int main()
{
fin.open("bfs.in");
fout.open("bfs.out");
read();
BFS();
print();
fin.close();
fout.close();
return 0;
}