Pagini recente » Cod sursa (job #1806392) | Cod sursa (job #122493) | Cod sursa (job #1834993) | Cod sursa (job #1170328) | Cod sursa (job #1326894)
#include <fstream>
#include <cstdio>
#include <vector>
using namespace std;
ofstream fout("bfs.out");
int a[100001],n,m,s;
struct coada{int nod,pas;}co[100001];
vector<int>nod[100001];
void bfs(int s)
{
int inc=1,sf=1;
a[s]=0;
co[inc].nod=s; co[inc].pas=0;
while(inc<=sf)
{
for(int i=0;i<nod[co[inc].nod].size();i++)
if(a[nod[co[inc].nod][i]]==-1)
{
co[++sf].nod=nod[co[inc].nod][i];
co[sf].pas=co[inc].pas+1;
a[nod[co[inc].nod][i]]=co[sf].pas;
}
inc++;
}
}
int main()
{
int x,y;
freopen("bfs.in","r",stdin);
scanf("%d%d%d",&n,&m,&s);
for(int i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
nod[x].push_back(y);
}
for(int i=1;i<=n;i++)
a[i]=-1;
bfs(s);
for(int i=1;i<=n;i++)
fout<<a[i]<<' ';
return 0;
}