Pagini recente » Cod sursa (job #1006718) | Cod sursa (job #163911) | Cod sursa (job #1777138) | Cod sursa (job #2654964) | Cod sursa (job #828306)
Cod sursa(job #828306)
#include<cstdio>
#include<vector>
#include<deque>
using namespace std;
vector<int> G[100001];
deque<int> Q;
int C[100001],i,n,m,s,q,N,L,a,b;
bool B[100001];
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d %d %d\n",&n,&m,&s);
for(i=1;i<=m;i++)
{
scanf("%d %d",&a,&b);
G[a].push_back(b);
}
Q.push_back(s); C[s]=0; B[s]=1;
for(;!Q.empty();)
{
N=Q.front(); Q.pop_front();
L=G[N].size();
for(i=0;i<L;i++)
{
q=G[N][i];
if(!B[q])
{
Q.push_back(q);
B[q]=1;
C[q]=C[N]+1;
}
}
}
for(i=1;i<=n;i++)
if((!C[i])&&i==s) printf("0 ");
else if(!C[i]) printf("-1 ");
else printf("%d ",C[i]);
return 0;
}