Pagini recente » Cod sursa (job #281560) | Cod sursa (job #1595634) | Cod sursa (job #571775) | Cod sursa (job #527147) | Cod sursa (job #804825)
Cod sursa(job #804825)
#include <fstream>
#include <string.h>
#include <queue>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
queue <int> q;
struct point
{
int inf;
point *leg;
};
point *l[100001],*p;
bool sel[100001];
int n,m,s,i,x,y,nr[100001];
void bfs (int x)
{
point *p;
int nod;
memset (sel,false,sizeof(sel));
memset (nr,-1,sizeof(nr));
sel[x]=true;
q.push(x); nr[x]=0;
while (!q.empty())
{
nod=q.front();
p=new point;p=l[nod];
while (p)
{
if (!sel[p->inf])
{
q.push(p->inf);
sel[p->inf]=true;
nr[p->inf]=nr[nod]+1;
}
p=p->leg;
}
q.pop();
}
}
int main()
{
f>>n>>m>>s;
for (i=1;i<=m;i++)
{
f>>x>>y;
p=new point;
p->inf=y;
p->leg=l[x];
l[x]=p;
}
bfs(s);
for (i=1;i<=n;i++)
g<<nr[i]<<' ';
return 0;
}