Pagini recente » Cod sursa (job #746262) | Cod sursa (job #181767) | Cod sursa (job #2959856) | Cod sursa (job #2159318) | Cod sursa (job #2367548)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
int n, m, s;
ifstream f("bfs.in"); ofstream g("bfs.out");
vector <int> vecini[100005]; bool viz[100005]; int dist[100005];
queue <int> q;
void BFS() {
int i;
while (!q.empty()) {
viz[q.front()] = 1;
for(i = 0; i < vecini[q.front()].size(); ++i) {
if(!viz[vecini[q.front()][i]]) {
dist[vecini[q.front()][i]] = dist[q.front()] + 1;
q.push(vecini[q.front()][i]);
}
}
q.pop();
}
}
int main() {
int i,x,y;
f>>n>>m>>s;
for(i = 1; i <= m; ++i) {
f>>x>>y;
vecini[x].push_back(y);
}
viz[s] = 1;
dist[s] = 0;
q.push(s);
BFS();
for(i = 1; i <= n; ++i) {
if(!viz[i]) g<<-1<<' ';
else g<<dist[i]<<' ' ;
}
return 0;
}