Pagini recente » Istoria paginii runda/ichbscoala2015clasa8/clasament | Cod sursa (job #2103016) | Cod sursa (job #408950) | Cod sursa (job #403497) | Cod sursa (job #505850)
Cod sursa(job #505850)
#include <fstream>
using namespace std;
const int Lg = 100001;
ifstream fin ("bfs.in");
ofstream fout ("bfs.out");
struct nod
{
int inf;
nod *urm;
};
nod *g[Lg];
int n, m, s, st[Lg], sf, viz[Lg], lg[Lg];
void add(int x, int y)
{
nod *aux = new nod;
aux->inf = y;
aux->urm = g[x];
g[x] = aux;
}
void citire()
{
fin>>n>>m>>s;
int x, y;
for (int i=0;i<m;i++)
{
fin>>x>>y;
add(x,y);
}
}
void bfs()
{
viz[s]=1;
st[0]=s;
sf=1;
for (int i=1; i<=n; i++)
lg[i]=-1;
lg[s]=0;
for (int i=0;i<sf;i++)
for (nod *j=g[st[i]];j;j=j->urm)
if (viz[j->inf]==0)
{
viz[j->inf]=1;
st[sf++]=j->inf;
lg[j->inf]=lg[i]+1;
}
}
int main()
{
citire();
bfs();
for (int i=1; i<=n; i++)
fout<<lg[i]<<" ";
return 0;
}