Pagini recente » Cod sursa (job #259195) | Cod sursa (job #2727497) | Cod sursa (job #787911) | Cod sursa (job #2789657) | Cod sursa (job #1423094)
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
#define MAX_DIM 100005
#define INF 20000000
std::vector <int> G[MAX_DIM];
std::queue <int> Q;
int N, M, s;
int visit[MAX_DIM];
int dist[MAX_DIM];
int main()
{
ifstream inFile("bfs.in");
ofstream outFile("bfs.out");
inFile >> N >> M >> s;
int x, y;
for(int i = 1; i <= M; i++) {
inFile >> x >> y;
G[x].push_back(y);
}
for(int i = 1; i <= N; i++) {
dist[i] = -1;
}
dist[s] = 0;
visit[s] = 1;
Q.push(s);
while( !Q.empty() ) {
int u = Q.front();
for(int j = 0; j < G[u].size(); j++) {
int v = G[u][j];
if( !visit[v] ) {
dist[v] = dist[u] + 1;
visit[v] = 1;
Q.push(v);
}
}
Q.pop();
}
for(int i = 1; i <= N; i++) {
outFile << dist[i] << " ";
}
}