Pagini recente » Cod sursa (job #2583948) | Cod sursa (job #181721) | Cod sursa (job #1735745) | Cod sursa (job #2338744) | Cod sursa (job #840837)
Cod sursa(job #840837)
#include <cstdio>
#include <cstdlib>
int cate[100100];
int *drum[100100];
int viz[100100];
int n,m;
int coada[100100];
int bfs(int k)
{
//memset(coada,0,sizeof(coada));
int st=1,fin=1;
coada[st]=k;
viz[k]=1;
while(st<=fin)
{
for(int i=1;i<=drum[coada[st]][0];i++)
{
if(!viz[drum[coada[st]][i]])
{
coada[++fin]=drum[coada[st]][i];
viz[coada[fin]]=viz[coada[st]]+1;
}
}
st++;
}
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
int s;
scanf("%d%d%d",&n,&m,&s);
int sp,st;
for(int i=1;i<=m;i++)
{
scanf("%d%d",&st,&sp);
cate[st]++;
//cate[sp]++;
}
for(int i=1;i<=n;i++)
{
drum[i]=(int *)malloc( (cate[i]+3)*sizeof(int));
drum[i][0]=0;
}
fseek(stdin,0,SEEK_SET);
scanf("%d%d%d",&n,&m,&s);
for(int i=1;i<=m;i++)
{
scanf("%d%d",&st,&sp);
drum[st][++drum[st][0]]=sp;
//drum[sp][++drum[sp][0]]=st;
}
bfs(s);
for(int i=1;i<=n;i++)
printf("%d ",viz[i]-1);
return 0;
}