Pagini recente » Cod sursa (job #1266124) | Cod sursa (job #1703362) | Cod sursa (job #2067386) | Cod sursa (job #1047696) | Cod sursa (job #727536)
Cod sursa(job #727536)
#include<fstream>
#define maxn 100001
using namespace std;
struct pnod{
int info;
pnod *next;
};
pnod *lv[maxn];
int n, s, x, y, prim=0, ultim=0, varf, c[maxn], dist[maxn];
void adauga(int x, int y)
{pnod *aux=new pnod;
aux->info=y;
aux->next=lv[x-1];
lv[x-1]=aux;
}
void bf(int x)
{for(int i=0; i<n; i++)
dist[i]=-1;
dist[x-1]=0;
c[prim]=x;
for( ; prim<=ultim; prim++)
{varf=c[prim];
for(pnod *aux=lv[varf-1]; aux; aux=aux->next)
if(dist[aux->info-1]==-1)
{c[++ultim]=aux->info;
dist[aux->info-1]=dist[varf-1]+1;
}
}
}
int main()
{ifstream f("bfs.in");
ofstream g("bfs.out");
f>>n>>s>>s;
for(; f>>x>>y; )
adauga(x, y);
bf(s);
for(int i=0; i<n; i++)
g<<dist[i]<<" ";
return 0;
}