Pagini recente » Cod sursa (job #2884802) | Cod sursa (job #259645) | Cod sursa (job #941020) | Cod sursa (job #2275127) | Cod sursa (job #1128362)
#include<fstream>
#include<vector>
#include<queue>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
struct nod {
int pas;
bool vizitat;
vector<int> vecini;
};
int n, m, i, x, y, s;
nod g[100001];
queue<int> coada;
void bfs(int x) {
int j;
for(j = 0; j < g[x].vecini.size(); j++) {
int vecin = g[x].vecini[j];
if(!g[vecin].vizitat) {
g[vecin].vizitat = true;
g[vecin].pas = g[x].pas + 1;
coada.push(vecin);
}
}
}
int main() {
fin >> n >> m >> s;
for(i = 0; i < m; i++) {
fin >> x >> y;
g[x].vecini.push_back(y);
}
coada.push(s);
g[s].pas = 0;
g[s].vizitat = true;
while(!coada.empty()) {
int aux = coada.front();
coada.pop();
bfs(aux);
}
for(i = 1; i <= n; i++) {
if(g[i].pas) {
fout << g[i].pas << ' ';
}else {
if(i == s) {
fout << '0' << ' ';
} else {
fout << "-1" << ' ';
}
}
}
}