Pagini recente » Kcity | Monitorul de evaluare | Anamaria | Monitorul de evaluare | Cod sursa (job #1725948)
#include <iostream>
#include <fstream>
#define Max 100002
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
struct Nod
{
int info;
Nod *urm;
};
Nod *prim[Max];
int n;
int d[Max];
void add(int x, int y)
{
Nod *p;
p=new Nod;
p->info=y;
p->urm=prim[x];
prim[x]=p;
}
void bfs(int S)
{
int c[Max];
int p=0,u=0;
int i,x;
for(i=1; i<=n; ++i) d[i]=-1;
d[S]=0;
Nod *q;
c[0]=S;
while(p<=u)
{
x=c[p++];
for(q=prim[x]; q; q=q->urm)
{
if(d[q->info]==-1)
{
d[q->info]=d[x]+1;
c[++u]=q->info;
}
}
}
for(i=1; i<=n; ++i) g<<d[i]<<" ";
}
int main()
{
int m,s,x,y,i;
f>>n>>m>>s;
for(i=1;i<=m;i++)
{
f>>x>>y;
add(x,y);
}
bfs(s);
return 0;
}