Pagini recente » Cod sursa (job #2591626) | Cod sursa (job #1078902) | Cod sursa (job #2643638) | Cod sursa (job #1766016) | Cod sursa (job #1221191)
#include <iostream>
#include <fstream>
#include <cstring>
#include <queue>
using namespace std;
struct nod
{
int inf;
nod *urm;
};
ifstream fin("bfs.in");
queue <int> q;
int v[100010],n,m,s;
nod *l[100010];
void citire()
{
memset(v,-1,sizeof(v));
fin>>n>>m>>s;
int a,b;
for(int i=1;i<=m;i++)
{
fin>>a>>b;
nod *v;
v=new nod;
v->inf=b;
v->urm=l[a];
l[a]=v;
}
}
void bfs()
{
q.push(s);
v[s]=0;
while(!q.empty())
{
int a=q.front();
for(nod *p=l[a];p;p=p->urm)
{
if(v[p->inf]==-1)
{
q.push(p->inf);
v[p->inf]=v[a]+1;
}
}
q.pop();
}
}
void afisare()
{
for(int i=1;i<=n;i++)
cout<<v[i]<<" ";
}
int main()
{
citire();
bfs();
afisare();
return 0;
}