Pagini recente » Cod sursa (job #3223483) | Cod sursa (job #242631) | Cod sursa (job #820508) | Cod sursa (job #369377) | Cod sursa (job #1731959)
#include <cstdio>
#include <vector>
#include <deque>
#include <algorithm>
#define INF 2000000000
#define MaxN 100001
using namespace std;
int N,M,S,v[MaxN]={},start,final;
vector<int>List[MaxN];
deque<int>Queue;
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d",&N,&M,&S);
for(int i=1;i<=N;i++)
v[i]=INF;
v[S]=0;
Queue.push_back(S);
for(int i=1;i<=M;i++)
{
scanf("%d%d",&start,&final);
List[start].push_back(final);
}
while(!Queue.empty())
{
for(int i=0;i<List[Queue[0]].size();i++)
if(v[List[Queue[0]][i]]>v[Queue[0]]+1)
Queue.push_back(List[Queue[0]][i]),v[List[Queue[0]][i]]=v[Queue[0]]+1;
Queue.pop_front();
}
for(int i=1;i<=N;i++)
if(v[i]==INF)
printf("-1 ");
else
printf("%d ",v[i]);
return 0;
}