Pagini recente » Cod sursa (job #3168490) | Cod sursa (job #2504834) | Cod sursa (job #2852763) | Cod sursa (job #2714617) | Cod sursa (job #360364)
Cod sursa(job #360364)
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
int n,m,s,i,x,y;
int u[100003];
vector<int> a[100003];
queue<int> Q;
#define TR(C,it) \
for( typeof(C.begin()) it = C.begin(); it != C.end(); it++ )
#define pb push_back
void bfs()
{
int i,l,j,v;
Q.push( s );
u[s]=1;
while( ! Q.empty() )
{
v = Q.front(); Q.pop();
TR( a[v], i )
if( !u[*i])
{
u[*i] = u[v] + 1;
Q.push( *i );
}
}
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d",&n,&m,&s);
for(i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
a[x].pb(y);
}
bfs();
for(i=1;i<=n;i++)
printf("%d ",u[i]-1);
return 0;
}