Pagini recente » Cod sursa (job #584454) | Cod sursa (job #3146439) | Cod sursa (job #1600756) | Cod sursa (job #2547454) | Cod sursa (job #1564102)
#include <fstream>
#include <cmath>
#include <vector>
#include <set>
#include <algorithm>
#include <cstring>
#include <map>
#include <iomanip>
#include <time.h>
#include <stdio.h>
#include <bitset>
#define MAX 500000000000
//#include <iostream>
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
int x[100004], vecini[100004];
void BFS(vector<int> vec[], int n, int m, int nodst, int x[], int vecini[])
{
int coada = 0, cap = 1;
vecini[coada] = nodst - 1;
x[nodst - 1] = 0;
while(cap != coada){
for(int i = 0; i < vec[vecini[coada]].size(); i++){
if(x[vec[vecini[coada]][i]] == -1){
vecini[cap++] = vec[vecini[coada]][i];
x[vec[vecini[coada]][i]] = x[vecini[coada]] + 1;
}
}
coada++;
}
}
int main()
{
int n, nodst, m, a, b;
vector<int> vec[100004];
cin >> n >> m >> nodst;
for(int i = 0; i < n; i++)
x[i] = -1;
for(int i = 0; i < m; i++){
cin >> a >> b;
vec[a - 1].push_back(b - 1);
}
BFS(vec, n, m, nodst, x, vecini);
for(int i = 0; i < n; i++)
cout << x[i] << " ";
return 0;
}