Pagini recente » Cod sursa (job #1584547) | Cod sursa (job #2173885) | Cod sursa (job #1753155) | Cod sursa (job #366312) | Cod sursa (job #1242391)
#include<iostream>
#include<fstream>
#include<vector>
#include<queue>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
struct nod{
int cost;
vector<int> vecini;
};
int n, m, s;
nod graf[100001];
queue<int> coada;
void viziteaza(int x) {
vector<int>::iterator it;
for(it = graf[x].vecini.begin(); it < graf[x].vecini.end(); it++) {
if(!graf[*it].cost) {
graf[*it].cost = graf[x].cost + 1;
coada.push(*it);
}
}
}
int main() {
fin >> n >> m >> s;
for(int i = 0; i < m; i++) {
int a, b;
fin >> a >> b;
graf[a].vecini.push_back(b);
}
coada.push(s);
graf[s].cost = 1;
while(!coada.empty()) {
viziteaza(coada.front());
coada.pop();
}
for(int i = 1; i <= n; i++) {
fout << graf[i].cost - 1 << ' ';
}
}