Pagini recente » Cod sursa (job #1341654) | Cod sursa (job #529072) | Cod sursa (job #2715700) | Cod sursa (job #1604013) | Cod sursa (job #1086290)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <cstring>
using namespace std;
ifstream f ("bfs.in");
ofstream g ("bfs.out");
int n, m, s;
int d[100001];
vector <int> graf[100001];
queue <int> q;
void citeste () {
f>>n>>m>>s;
int a, b;
for (int i=1; i<=m; i++) {
f>>a>>b;
graf[a].push_back (b);
//graf[b].push_back (a);
}
memset (d, -1, sizeof (d));
}
void BFS () {
q.push (s);
d[s] = 0;
int l;
int nod;
while (!q.empty ()) {
l = graf[q.front ()].size ();
for (int i=0; i<l; i++) {
nod = graf[q.front ()][i];
//cout<<nod<<endl;
if (d[nod] == -1) {
d[nod] = d[q.front ()]+1;
q.push (nod);
}
}
q.pop ();
}
}
void scrie () {
for (int i=1; i<=n; i++) {
g<<d[i]<<' ';
}
}
int main () {
citeste ();
BFS ();
scrie ();
return 0;
}