Pagini recente » Cod sursa (job #348231) | Cod sursa (job #2219533) | Cod sursa (job #1302770) | Cod sursa (job #2447788) | Cod sursa (job #2407950)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ofstream ki("bfs.out");
int main(){
ifstream be("bfs.in");
int n, m, s;
be >> n >> m >> s;
vector<int> graph[n];
bool visited[n];
int dist[n];
for(int i = 0; i <= n; i++){
visited[i] = 0;
dist[i] = -1;
}
int x, y;
for(int i = 0; i < m; ++i){
be >> x >> y;
graph[x].push_back(y);
}
dist[s] = 0;
visited[s] = 1;
queue<int> q;
q.push(s);
int index;
vector<int>::iterator it;
while(!q.empty()){
index = q.front();
q.pop();
for(it = graph[index].begin(); it != graph[index].end(); ++it){
int cur = *it;
if(!visited[cur]){
visited[cur] = 1;
dist[cur] = 1 + dist[index];
q.push(cur);
}
}
}
for(int i = 1; i <= n; i++){
ki << dist[i] << " ";
}
}