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