Pagini recente » Cod sursa (job #1896548) | Cod sursa (job #1359145) | Cod sursa (job #1233396) | Cod sursa (job #750995) | Cod sursa (job #394843)
Cod sursa(job #394843)
#include <iostream>
using namespace std;
int m,n,s,mat[1000][1000],v[1000];
void citire()
{
scanf("%d%d%d",&n,&m,&s);
for(int i=1;i<=m;i++)
for(int j=1;j<=m;j++)
{
mat[i][j]=0;
}
for(int i=1;i<=m;i++)
{
int x,y;
scanf("%d%d",&x,&y);
mat[x][y]=1;
}
}
void latime()
{
struct coada
{
int c,inf;
}cod[1000];
int viz[1000]={0},p,u;
for(int i=1;i<=n;i++)
{
if(s!=i)
v[i]=-1;
}
cod[0].inf=0;
u=p=0;
cod[p].c=s;
viz[s]=1;
while(p<=u)
{
for(int i=1;i<=n;i++)
{
if(!viz[i]&&mat[cod[p].c][i])
{
viz[i]=1;
// printf("%d ",i);
u++;
cod[u].c=i;
cod[u].inf=cod[p].inf+1;
}
}
p++;
}
for(int i=1;i<=n;i++)
{
v[cod[i].c]=cod[i].inf;
}
for(int i=1;i<=n;i++)
printf("%d ",v[i]);
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
citire();
latime();
return 0;
}