Pagini recente » Cod sursa (job #1907967) | Cod sursa (job #2216616) | Cod sursa (job #1134165) | Cod sursa (job #1739397) | Cod sursa (job #862353)
Cod sursa(job #862353)
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<vector>
#include<queue>
#include<deque>
#include<list>
#define pb push_back
#define maxn 100050
using namespace std;
queue < int > q;
vector < int > G[maxn];
int i,n,m,s,x,y,M[maxn];
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d",&n,&m,&s);
for(;m--;)
{
scanf("%d%d",&x,&y);
G[x].pb(y);
}
q.push(s);
while(!q.empty())
{
x=q.front();
for(std::vector<int>::iterator it=G[x].begin() ; it != G[x].end(); ++it)
if((M[*it]==0||M[x]+1<M[*it])&&(*it!=s))
{
M[*it]=M[x]+1;
q.push(*it);
}
q.pop();
}
for(i=1;i<=n;++i)
if(i!=s&&M[i]==0)
printf("-1 ");
else
printf("%d ",(i!=s)*M[i]);
return 0;
}