Cod sursa(job #394843)
| Utilizator | Data | 11 februarie 2010 18:12:40 | |
|---|---|---|---|
| Problema | BFS - Parcurgere in latime | Scor | 30 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 1.42 kb |
#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;
}
