Pagini recente » Cod sursa (job #994997) | Cod sursa (job #2904718) | Cod sursa (job #785896) | Cod sursa (job #3041824) | Cod sursa (job #341702)
Cod sursa(job #341702)
#include<fstream>
#include<stdlib.h>
#define dmax 100003
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
bool viz[dmax];
int n,m,s,c[dmax],dm[dmax];
int* dr[dmax];
void bfs()
{ int p1=1,p2=1,i;
c[p1]=s;
dm[s]=0;
viz[s]=1;
while(p1<=p2)
{ for(i=1;i<=dr[c[p1]][0];i++)
{ if(viz[dr[c[p1]][i]]==0)
{ viz[dr[c[p1]][i]]=1;
p2++;
c[p2]=dr[c[p1]][i];
dm[c[p2]]=dm[c[p1]]+1;
}
}
p1++;
}
}
int main()
{ int i,x,y;
in>>n>>m>>s;
for(i=1;i<=n;i++)
{ dr[i]=(int*)realloc(dr[i],sizeof(int));
dr[i][0]=0;
}
for(i=1;i<=m;i++)
{ in>>x>>y;
dr[x][0]++;;
dr[x]=(int*)realloc(dr[x],(dr[x][0]+1)*sizeof(int));
dr[x][dr[x][0]]=y;
}
in.close();
for(i=1;i<=n;i++)
dm[i]=-1;
bfs();
for(i=1;i<=n;i++)
out<<dm[i]<<" ";
out.close();
return 0;
}