Pagini recente » Cod sursa (job #1739195) | Cod sursa (job #2508327) | Cod sursa (job #171223) | Cod sursa (job #3188377) | Cod sursa (job #1985073)
#include <bits/stdc++.h>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
struct nod{int nr; nod *urm;}*a[100001];
int n,m,x0,d[100001],x[100001];
bool viz[100001];
void citire()
{
f>>n>>m>>x0;
int x,y;
for(int i=1;i<=m;i++)
{
f>>x>>y;
nod *p=new nod;
p->urm=a[x];
p->nr=y;
a[x]=p;
}
}
void bf()
{
int st=1,dr=1;
x[1]=x0;
viz[x0]=1;
while(st<=dr)
{
for(nod *p=a[x[st]];p;p=p->urm)
if(!viz[p->nr])
x[++dr]=p->nr,viz[p->nr]=1,d[x[dr]]=d[x[st]]+1;
++st;
}
}
int main()
{
citire();
bf();
for(int i=1;i<=n;++i)
{
if(d[i]==0 && i!=x0)
g<<-1<<" ";
else
g<<d[i]<<" ";
}
return 0;
}