Pagini recente » Cod sursa (job #1522416) | Cod sursa (job #2623002) | Cod sursa (job #3265387) | Cod sursa (job #55298) | Cod sursa (job #714454)
Cod sursa(job #714454)
#include <cstdio>
#include <vector>
#define nMax 100001
#include <queue>
using namespace std;
int n;
vector <int> graf[nMax];
queue <int> coada;
int a[nMax];
int nod;
void citire()
{
int m;
scanf ("%d %d %d", &n, &m, &nod);
while (m --){
int x;
int y;
scanf ("%d %d", &x, &y);
graf[x].push_back (y);
}
}
void bfs()
{
coada.push (nod);
a[nod] = 1;
while (!coada.empty ()){
int x = coada.front();
coada.pop();
for (unsigned int i = 0; i < graf[x].size(); ++ i){
if (a[graf[x][i]] == 0){
a[graf[x][i]] = a[x] + 1;
coada.push (graf[x][i]);
}
}
}
}
void afis()
{
for (int i = 1; i <= n; ++ i){
if (a[i]){
printf ("%d ", a[i] - 1);
}else{
printf ("-1 ");
}
}
}
int main()
{
freopen ("bfs.in", "r", stdin);
freopen ("bfs.out", "w", stdout);
citire();
bfs();
afis();
return 0;
}