Pagini recente » Cod sursa (job #932311) | Cod sursa (job #447082) | Cod sursa (job #559778) | Cod sursa (job #916155) | Cod sursa (job #999426)
Cod sursa(job #999426)
#include<iostream>
#include<fstream>
#include<vector>
#include<queue>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
struct nod {
int cost;
bool vizitat;
vector<int> vecini;
};
int n, m, s, i, a, b, v[100002];
nod nodes[100002];
queue<int> coada;
void search(int x) {
int l, j;
nodes[x].vizitat = true;
l = nodes[x].vecini.size();
for(j = 0; j < l; j++) {
int vecin = nodes[x].vecini[j];
if(nodes[vecin].vizitat == false) {
nodes[vecin].cost = nodes[x].cost + 1;
coada.push(vecin);
}
}
}
int main() {
fin >> n >> m >> s;
for(i = 0; i < m; i++) {
fin >> a >> b;
nodes[a].vecini.push_back(b);
}
nodes[s].cost = 1;
coada.push(s);
while(!coada.empty()) {
search(coada.front());
coada.pop();
}
for(i = 1; i <= n; i++) {
fout << nodes[i].cost - 1 << ' ';
}
fin.close();
fout.close();
return 0;
}