Pagini recente » Cod sursa (job #1275655) | Cod sursa (job #1124658) | Cod sursa (job #3314496) | Cod sursa (job #3330063) | Cod sursa (job #1952265)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream f("bfs.in"); ofstream g("bfs.out");
vector <int> vecini[100005];
queue <int> q;
int a[100005];
int n,m,s,viz[100005];
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]] == 0) {
q.push(vecini[q.front()][i]);
a[vecini[q.front()][i]] = a[q.front()] + 1;
viz[vecini[q.front()][i]] = 1;
}
}
q.pop();
}
}
int main(){
int i,x,y;
f>>n>>m>>s;
for(i = 1; i <= n; ++i) {
a[i] = -1;
viz[i] = 0;
}
for(i = 1; i <= m; ++i) {
f>>x>>y;
vecini[x].push_back(y);
}
q.push(s);
a[s] = 0;
bfs();
for(i = 1; i <= n; ++i) {
g<<a[i]<<' ';
}
return 0;
}