Pagini recente » Cod sursa (job #2318395) | Cod sursa (job #2701301) | Cod sursa (job #75989) | Cod sursa (job #807432) | Cod sursa (job #1338509)
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
#define nmax 100005
vector <int> v[nmax];
queue <int> coada;
int n,m,s,viz[nmax]={0};
void bfs(int xp)
{
coada.push(xp);
viz[xp]=1;
while (!coada.empty())
{
int nodcurent=coada.front();
coada.pop();
for (int i=0;i<v[nodcurent].size();i++)
{
if (viz[ v[nodcurent][i] ]==0)
{
coada.push( v[nodcurent][i] );
viz[ v[nodcurent][i] ]=viz[nodcurent]+1;
}
}
}
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
int i,x,y;
scanf("%d %d %d",&n,&m,&s);
for (i=1;i<=m;i++)
{
scanf("%d %d",&x,&y);
v[x].push_back(y);
}
bfs(s);
for (i=1;i<=n;i++)
printf("%d ",viz[i]-1);
return 0;
}