Pagini recente » Cod sursa (job #1960667) | Cod sursa (job #1431604) | Cod sursa (job #1319479) | Cod sursa (job #1906020) | Cod sursa (job #588342)
Cod sursa(job #588342)
#include<fstream>
using namespace std;
ofstream g("bfs.out");
int i,j,n,m,s,*a[100002],x,y,viz[100002],q[1000001],d[1000001];
void afis(int x)
{
int p=0,i;
if(viz[x]==0)
g<<-1<<" ";
else
{
d[0]=x;
while(viz[d[p]]!=-1)
d[++p]=viz[d[p-1]];
g<<p<<" ";
}
}
void bfs(int x,int y)
{
int i,st=0,dr=0;
viz[x]=-1;
q[0]=x;
while(st<=dr)
{
x=q[st++];
for(i=1;i<=a[x][0];i++)
if(!viz[a[x][i]])
{
viz[a[x][i]]=x;
q[++dr]=a[x][i];
}
}
afis(y);
}
int main()
{
ifstream f("bfs.in");
f>>n>>m>>s;
for(i=0;i<=n;i++)
{
a[i]=(int *)realloc(a[i],sizeof(int));
a[i][0]=0;
}
while(f>>x>>y)
{
a[x][0]++;
a[x]=(int *)realloc(a[x],(a[x][0]+1)*sizeof(int));
a[x][a[x][0]]=y;
}
for(i=1;i<=n;i++)
bfs(s,i);
return 0;
}