Pagini recente » Cod sursa (job #2774197) | Cod sursa (job #1869467) | Cod sursa (job #381186) | Cod sursa (job #2747333) | Cod sursa (job #921288)
Cod sursa(job #921288)
#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 i,j,n,m,X,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;
}
prim=ultim=new nod;
prim->vf=X;
prim->next=ultim;
viz[X]=1;
d[X]=0;
int vfcrt;
while(prim!=NULL)
{
vfcrt=prim->vf;
while(p[vfcrt]!=NULL)
{
if(viz[p[vfcrt]->vf]==0)
{
nou=new nod;
nou->vf=p[vfcrt]->vf;
ultim->next=nou;
ultim=nou;
viz[nou->vf]=1;
ultim->next=NULL;
d[ultim->vf]=d[vfcrt]+1;
}
p[vfcrt]=p[vfcrt]->next;
}
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]<<" ";
}
}