Pagini recente » Cod sursa (job #3184902) | Cod sursa (job #487004) | Cod sursa (job #1779115) | Cod sursa (job #9735) | Cod sursa (job #2671964)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <cstring>
using namespace std;
#define MAXN 100005
vector<int> links[MAXN];
int N, M, X;
int dist[MAXN];
bool visited[MAXN];
int aux[MAXN];
queue<int> q;
int bfs(){
//memset(dist,-1,N+1);
for ( int i = 0; i <= N; i++ ){
dist[i] = -1;
}
q.push(X);
visited[X] = true;
dist[X] = 0;
int current;
while ( !q.empty() ){
current = q.front();
for ( auto &x : links[current] ){
if ( !visited[x] ){
q.push(x);
dist[x] = dist[current] + 1;
visited[x] = true;
}
}
q.pop();
}
}
int main(){
ifstream fin ("bfs.in");
ofstream fout("bfs.out");
fin >> N >> M >> X;
int a, b;
for ( int i = 0; i < M; i++ ){
fin >> a >> b;
links[a].push_back(b);
}
bfs();
for ( int i = 1; i <= N; i++ ){
fout << dist[i] << ' ';
}
return 0;
}