Pagini recente » Cod sursa (job #505098) | Cod sursa (job #1299832) | Cod sursa (job #67052) | Cod sursa (job #1523115) | Cod sursa (job #745294)
Cod sursa(job #745294)
#include <fstream>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
struct point
{ int nod;
point *urm;
};
point *G[100010];
int n, m, i, x, y, nod_1,nod_2;
int D[100001]={-1}, C[100001], U[100001];
void add(int x, int y)
{
point *p;
p = new point;
p->nod = y;
p->urm = G[x];
G[x] = p;
}
void creare()
{
point *p;
f>>n>>m>>nod_1;
for(; m; --m)
{
f>>x>>y;
add(x, y);
}
}
void bfs(int v)
{
point *p;
int nod, s, d;
s=d=1;
C[1]=v;
U[v]=1;
D[v]=0;
for (; s<=d; s++)
{
nod=C[s];
for(p=G[nod]; p!=NULL; p=p->urm)
if(!U[p->nod])
{
C[++d]=p->nod;
U[p->nod]=1;
D[p->nod]=D[nod]+1;
}
}
}
int main()
{
creare();
bfs(nod_1);
for(i=1; i<=n; ++i)
if(D[i]==0 && i!=nod_1) g<<-1<<" ";
else g<<D[i]<<" ";
}