Pagini recente » Cod sursa (job #213504) | Cod sursa (job #42248) | Cod sursa (job #2925336) | Cod sursa (job #2812954) | Cod sursa (job #1127821)
/*
Keep It Simple!
*/
#include<stdio.h>
#include<list>
#define MaxN 100005
using namespace std;
list<int> G[MaxN],Queue;
int n,m,S;
int dist[MaxN];
void BFS(int node)
{
Queue.push_back(node);
dist[node] = 0;
while(Queue.size())
{
int Source = Queue.front();
Queue.pop_front();
for(list<int>::iterator it = G[Source].begin(); it!=G[Source].end(); it++)
if(dist[*it] == -1)
{
Queue.push_back(*it);
dist[*it] = dist[Source] + 1;
}
}
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d",&n,&m,&S);
int x,y;
for(int i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
G[x].push_back(y);
}
for(int i=1;i<=n;i++) dist[i] = -1;
BFS(S);
for(int i=1;i<=n;i++)
printf("%d ",dist[i]);
}