Pagini recente » Cod sursa (job #1614011) | Cod sursa (job #2724586) | Cod sursa (job #2955177) | Cod sursa (job #854800) | Cod sursa (job #780762)
Cod sursa(job #780762)
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <queue>
using namespace std;
#define nmax 100010
vector<int> G[nmax];
int N, M, X, Y, Cost[nmax], S;
void BFS(int startNode)
{
int node, i;
vector<int> :: iterator it;
queue<int> Q;
Q.push(startNode);
for(i = 1; i <= N; i++) Cost[i] = -1;
Cost[startNode] = 0;
while(!Q.empty())
{
node = Q.front(); Q.pop();
for(it = G[node].begin(); it != G[node].end(); ++it)
if(Cost[*it] == -1)
Cost[*it] = Cost[node] + 1,
Q.push(*it);
}
}
int main()
{
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
int i;
scanf("%i %i %i", &N, &M, &S);
for(i = 1; i <= M; i++)
{
scanf("%i %i", &X, &Y);
G[X].push_back(Y);
}
BFS(S);
for(i = 1; i <= N; i++) printf("%i ", Cost[i]);
return 0;
}