Pagini recente » Cod sursa (job #2855007) | Cod sursa (job #362923) | Cod sursa (job #753179) | Cod sursa (job #1554290) | Cod sursa (job #550013)
Cod sursa(job #550013)
#include <stdio.h>
#include <algorithm>
#include <vector>
#define nmax 100002
using namespace std;
vector <int> g[nmax];
int x,y,viz[nmax],nc,c[nmax],pasi[nmax];
int n,m,s;
void bf (int nod)
{
int p,u,i,v,j;
p=u=1;
pasi[nod]=0;
viz[nod]=1;
c[p]=nod;
while(p<=u)
{
v=c[p++];
for(j=0;j<g[v].size();++j)
{
i=g[v][j];
if(!viz[i])
{
c[++u]=i;
viz[i]=1;
pasi[i]=pasi[v]+1;
}
}
}
}
int main ()
{
int i;
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d %d %d", &n, &m, &s);
for(i=1;i<=n;++i) pasi[i]=-1;
for(i=1;i<=m;++i)
{
scanf("%d %d", &x, &y);
g[x].push_back (y);
}
bf (s);
for(i=1;i<=n;++i) printf("%d ", pasi[i]);
return 0;
}