Pagini recente » Cod sursa (job #2266044) | Cod sursa (job #2816882) | Cod sursa (job #1300969) | Cod sursa (job #340015) | Cod sursa (job #1519140)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
#define MAX 100100
typedef vector<int>::iterator iter;
vector<int> G[MAX];
int n, m, s, x, y, dr, st, Q[MAX], nod, dist[MAX], i;
int main()
{
fin >> n >> m >> s;
while(m--)
{
fin >> x >> y;
G[x].push_back(y);
}
Q[++dr] = s;
dist[s] = 1;
while(st <= dr)
{
int nod = Q[st];
st++;
for(iter it = G[nod].begin() ; it != G[nod].end() ; it++)
{
if(!dist[*it])
{
dist[*it] = 1 + dist[nod];
Q[dr++] = *it;
}
}
}
for(i = 1 ; i <= n ; i ++)
{
if(!dist[i])
fout << -1 << " ";
else
fout << dist[i] - 1 << " ";
}
fout << "\n";
return 0;
}