Cod sursa(job #667946)
#include<fstream>
#include<climits>
using namespace std;
ofstream out("bfs.out");
int a[100][100],q[100],uz[100],d[100],n,m,s;
void afis();
void citire();
void bfs(int start);
int main()
{
citire();
for(int i=1;i<=n;i++)
d[i]=100000000;
bfs(s);
afis();
return 0;
}
void afis()
{
for(int i=1;i<=n;i++)
if(d[i]!=INT_MAX)
out<<d[i]<<" ";
else
out<<-1<<" ";
}
void citire()
{
ifstream in("bfs.in");
int x,y;
in>>n>>m>>s;
for(;m;m--)
{
in>>x>>y;
a[x][y]=a[y][x]=1;
}
}
void bfs(int start)
{
int st,dr;
st=dr=1;
uz[start]=1;
q[st]=start;
d[start]=0;
while(st<=dr)
{
int k=q[st];
for(int i=1;i<=n;i++)
if(a[k][i]==1&&uz[i]==0)
{
++dr;
q[dr]=i;
uz[i]=1;
d[i]=d[q[st]]+1;
}
++st;
}
}