Pagini recente » Cod sursa (job #1130201) | Cod sursa (job #702172) | Monitorul de evaluare | Cod sursa (job #1864444) | Cod sursa (job #1832717)
#include <cstdio>
#include <vector>
#define nmax 100001
using namespace std;
int n,m,n1,x,y,i,j,k;
int v[nmax],d[nmax];
bool viz[nmax];
vector <int> a[nmax];
void citire()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d",&n,&m,&n1);
for(x=1;x<=m;x++)
{
scanf("%d%d",&i,&j);
a[i].push_back(j);
}
}
int main()
{
citire();
for(x=1;x<=n;x++) d[x]=-1;
v[1]=n1; viz[n1]=1; k=1; d[n1]=0;
for(x=1;x<=k;x++)
{
for(y=0;y<a[v[x]].size();y++)
if(!viz[a[v[x]][y]])
{
v[++k]=a[v[x]][y];
viz[v[k]]=1;
d[v[k]]=d[v[x]]+1;
}
}
for(x=1;x<=n;x++) printf("%d ",d[x]);
printf("\n");
return 0;
}