Pagini recente » Cod sursa (job #3138092) | Cod sursa (job #1565034) | Cod sursa (job #1478123) | Cod sursa (job #3283328) | Cod sursa (job #2781380)
#include <fstream>
#include <vector>
#include <queue>
#define NMAX 100005
using namespace std;
vector < vector < int > > v;
int sol[NMAX];
ifstream cin("bfs.in");
ofstream cout("bfs.out");
void BFS(int k)
{
queue < int > Q;
Q.push(k);
while(!Q.empty())
{
int aux = Q.front();
Q.pop();
//cout << "AICI " << aux << " ";
for(int i = 0 ; i < v[aux].size() ; i++)
if(sol[v[aux][i]] == -1)
//cout << v[aux][i] << ' ',
sol[v[aux][i]] = sol[aux] + 1,
Q.push(v[aux][i]);
//cout << '\n';
}
}
int main()
{
int n, m, k, x, y;
cin >> n >> m >> k;
v.resize(n+5);
for(int i = 1 ; i <= m ; i++)
{
cin >> x >> y;
if(x != y)
v[x].push_back(y);
}
for(int i = 1 ; i <= n ; i++)
if(i != k)
sol[i] = -1;
/*for(int i = 1 ; i <= n ; i++)
{
cout << i << " ";
for(int j = 0 ; j < v[i].size() ; j++)
cout << v[i][j] << ' ';
cout << '\n';
}*/
BFS(k);
for(int i = 1 ; i <= n ; i++)
cout << sol[i] << ' ';
return 0;
}