Pagini recente » Cod sursa (job #1950744) | Cod sursa (job #1575974) | Cod sursa (job #2010507) | Cod sursa (job #1857189) | Cod sursa (job #1109949)
#include <cstdio>
#include <vector>
#include <queue>
#define Nmax 100005
using namespace std;
int N, M, S, Drum[Nmax];
vector <int> G[Nmax];
void Citire()
{
int a, b;
scanf("%d %d %d", &N, &M, &S);
for (int i = 1; i <= M; ++i)
{
scanf("%d %d", &a, &b);
G[a].push_back(b);
}
for (int i = 1; i <= N; ++i)
Drum[i] = -1;
}
void BFS()
{
int nod;
queue <int> Q;
vector <int> :: iterator it;
Q.push(S);
Drum[S] = 0;
while (!Q.empty())
{
nod = Q.front();
Q.pop();
for (it = G[nod].begin(); it != G[nod].end(); ++it)
if (Drum[*it] == -1)
{
Drum[*it] = Drum[nod] + 1;
Q.push(*it);
}
}
}
void Afisare()
{
for (int i = 1; i <= N; ++i)
printf("%d ", Drum[i]);
}
int main()
{
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
Citire();
BFS();
Afisare();
return 0;
}