Pagini recente » Cod sursa (job #2591239) | Cod sursa (job #3127732) | Cod sursa (job #1611642) | Cod sursa (job #1385402) | Cod sursa (job #2098100)
#include <iostream>
#include <vector>
#include <fstream>
#define nmax 100010
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n,m,L,start;
int Stiva[nmax],ans[nmax],G[nmax];
vector < int > A[nmax];
void BFS(int nod)
{
for(int i =1 ; i <= n ; i++)
ans[i]=-1;
L=1;
Stiva[L]=nod;
ans[nod]=0;
for(int i =1; i <= L; i ++)
for(int j = 0 ; j < G[Stiva[i]]; j ++)
if(ans[A[Stiva[i]][j]]==-1)
{
Stiva[++L]=A[Stiva[i]][j];
ans[Stiva[L]]=ans[Stiva[i]]+1;
}
}
int main()
{
int x,y;
fin>>n>>m>>start;
for(int i = 1; i <= m ; i ++)
{
fin>>x>>y;
A[x].push_back(y);
}
for(int i = 1; i <= n ; i++)
G[i]=A[i].size();
BFS(start);
for(int i =1; i <= n ; i++)
fout<<ans[i]<<" ";
return 0;
}