Pagini recente » Cod sursa (job #354338) | Cod sursa (job #921262)
Cod sursa(job #921262)
#include <iostream>
#include<fstream>
#define N 100001
using namespace std;
struct nod
{
int vf;
nod *next;
}*prim, *ultim,*p[N];
int d[N],viz[N];
int main()
{
int n,m,i,j,X,Y,x,y;
fstream f("bfs.in",ios::in),g("bfs.out",ios::out);
f>>n>>m>>X;
nod *nou;
for(i=1;i<=m;i++)
{
f>>x>>y;
nou=new nod;
nou->vf=y;
nou->next=p[x];
p[x]=nou;
}
int vfcrt,maxd=0;
prim=ultim=new nod;
prim->vf=X;
d[X]=0;
viz[X]=1;
prim->next=ultim;
nod *temp;
while(prim!=NULL)
{
vfcrt=prim->vf;
temp=p[vfcrt];
while(p[vfcrt]!=NULL)
{
if(viz[p[vfcrt]->vf]==0)
{
nou=new nod;
nou->vf=p[vfcrt]->vf;
viz[nou->vf]=1;
ultim->next=nou;
ultim=ultim->next;
ultim->next=NULL;
d[nou->vf]=d[vfcrt]+1;
}
p[vfcrt]=p[vfcrt]->next;
}
p[vfcrt]=temp;
prim=prim->next;
}
for(i=1;i<=n;i++)
{
if(i==X)
g<<0<<" ";
else
if(d[i]==0)
g<<-1<<" ";
else
g<<d[i]<<" ";
}
}