Pagini recente » Cod sursa (job #2962802) | Cod sursa (job #612865) | Cod sursa (job #1280204) | Cod sursa (job #886301) | Cod sursa (job #632089)
Cod sursa(job #632089)
#include <cstdio>
#include <queue>
#define N 10000
using namespace std;
int n,m,s;
int x,y;
int a[N][N];
struct c
{
int x;
int c;
}coada[N];
void citire()
{
scanf("%d %d %d",&n,&m,&s);
for(int i=0;i<m;i++)
{
scanf("%d %d",&x,&y);
a[x][y]++;
}
}
int viz[N];
void bfs()
{ int sf=1;
int in=1;
coada[sf++].x=s;
viz[s]++;
while(in!=sf)
{
for(int i=1;i<=n;i++)
{
if(a[coada[in].x][i]!=0&&!viz[i])
{
coada[sf].x=i;
coada[sf++].c+=coada[in].c+1;
viz[i]=1;
}
}
in++;
}
}
void afis()
{
for(int i=1;i<=n;i++)
{int ok=0;
for(int j=1;j<=n;j++)
{
if(coada[j].x==i)
{
printf("%d ",coada[j].c);
ok=1;
break;
}
}
if(ok==0)
printf("-1 ");
}
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
citire();
bfs();
afis();
return 0;
}