Pagini recente » Cod sursa (job #1325871) | Cod sursa (job #2703757) | Cod sursa (job #763767) | Cod sursa (job #2496936) | Cod sursa (job #2986070)
#include <bits/stdc++.h>
using namespace std;
//ifstream f("file.in");
ifstream f("bfs.in");
ofstream g("bfs.out");
int n, m, X;
int d[101];
vector< int > G[1000];
void read() {
f>>n>>m>>X;
for(int i=1; i<=m; i++) {
int x, y;
f>>x>>y;
G[x].push_back(y);
// G[y].push_back(x);
}
}
queue<int> coada;
bool verif[101];
void bfs(int nodStart) {
for(int i=1; i<=n; i++) {
d[i] = 10000000;
}
coada.push(nodStart);
verif[nodStart] = true;
d[nodStart] = 0;
while(!coada.empty()) {
int nodCurent = coada.front();
coada.pop();
//cout<<nodCurent<<" ";
for(int i=0; i<G[nodCurent].size(); i++) {
if(!verif[G[nodCurent][i]]) {
d[G[nodCurent][i]] = d[nodCurent] + 1;
coada.push(G[nodCurent][i]);
verif[G[nodCurent][i]] = true;
}
}
}
}
void print() {
for(int i=1; i<=n; i++)
if(d[i] == 10000000)
g<<-1<<" ";
else
g<<d[i] <<" ";
}
int main() {
read();
bfs(X);
print();
return 0;
}