Pagini recente » Cod sursa (job #2278316) | Cod sursa (job #2693482) | Cod sursa (job #1959559) | Cod sursa (job #843562) | Cod sursa (job #2259216)
#include <iostream>
#include <vector>
#include <queue>
#define NMAX 100000
struct muchie {
int nod ;
};
using namespace std;
vector <muchie> mat [ NMAX + 1 ] ;
int dist [ NMAX + 1 ] ;
queue <muchie> q ;
void bfs (int s ) {
q.push ({s}) ;
dist[s] = 0 ;
while (!q.empty()) {
muchie first = q.front() ;
for (auto elem : mat[first.nod] ) {
if (dist[elem.nod] == 0 && elem.nod != s) {
q.push({elem.nod}) ;
dist[elem.nod] = dist[first.nod] + 1 ;
}
}
q.pop() ;
}
}
int main() {
FILE *fin, *fout ;
fin = fopen ("bfs.in", "r" ) ;
fout = fopen ("bfs.out", "w" ) ;
int n, m, s, i, a, b ;
fscanf (fin, "%d%d%d", &n, &m, &s ) ;
for (i = 0 ; i < m ; i++ ) {
fscanf (fin, "%d%d", &a, &b ) ;
mat[a].push_back({b}) ;
}
bfs (s) ;
for (i = 1 ; i <= n ; i++ ) {
if (dist[i] == 0 && i != s )
fprintf (fout, "-1 " ) ;
else
fprintf (fout, "%d ", dist[i] ) ;
}
return 0;
}