Pagini recente » Cod sursa (job #907859) | Cod sursa (job #1174134) | Cod sursa (job #2738212) | Cod sursa (job #1642074) | Cod sursa (job #631926)
Cod sursa(job #631926)
#include<iostream>
#include<vector>
#include<stdio.h>
using namespace std;
vector <int> muchii[100001];
int sel[ 100001];
void bf (const int &nod_sursa, const int &numar_noduri) {
vector<int> coada_bf;
coada_bf.push_back(nod_sursa);
int element_actual = 0;
sel[nod_sursa] = 1;
while (element_actual < coada_bf.size()) {
int nod_actual = coada_bf[element_actual];
int nr_vecini = muchii[nod_actual].size();
for (int j = 0; j < nr_vecini; ++j)
if (sel[muchii[nod_actual][j]] == 0) {
coada_bf.push_back( muchii[nod_actual][j]);
sel[ muchii[nod_actual][j]] = sel[nod_actual] + 1;
}
++element_actual;
}
for (int i = 1; i <= numar_noduri; ++i)
printf("%d ",sel[i] - 1);
}
int main() {
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
int numar_noduri, numar_muchii, nod_sursa;
scanf("%d %d %d ",&numar_noduri,&numar_muchii,&nod_sursa);
for (int i = 1; i <= numar_muchii; ++i) {
int sursa, destinatie;
scanf("%d%d",&sursa,&destinatie);
muchii[sursa].push_back(destinatie);
}
bf (nod_sursa, numar_noduri);
return 0;
}