Pagini recente » Cod sursa (job #1214821) | Cod sursa (job #732032) | Cod sursa (job #1510054) | Cod sursa (job #1633412) | Cod sursa (job #1784147)
#include <cstdio>
#include<deque>
#include<vector>
using namespace std;
int x,y,i,j,m,n,start,v[100003],viz[100003];
deque<int>Stack;
vector<int>nod[100003];
void bfs(int start)
{
int i;
Stack.push_back(start);
viz[start]=1;
while(!Stack.empty())
{
for(i=0;i<nod[Stack.front()].size();i++)
{
if(viz[nod[Stack.front()][i]]==0)
{
Stack.push_back(nod[Stack.front()][i]);
v[nod[Stack.front()][i]]=v[Stack.front()]+1;
viz[nod[Stack.front()][i]]=1;
}
}
Stack.pop_front();
}
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d",&n,&m,&start);
for(i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
nod[x].push_back(y);
}
bfs(start);
for(i=1;i<=n;i++)
if(v[i]==0&&i!=start)
printf("-1 ");
else printf("%d ",v[i]);
return 0;
}