Pagini recente » Cod sursa (job #1780161) | Cod sursa (job #1180796) | Cod sursa (job #1583294) | Cod sursa (job #2599066) | Cod sursa (job #2801595)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std ;
ifstream fin("bfs.in") ;
ofstream fout("bfs.out") ;
int n , m , s ;
vector<int>viz ;
vector<int>G[100005] ;
vector<int>d ;
void bfs(int nod , int cc) {
queue<int>q ;
q.push(nod) ;
viz[nod] = cc ;
d[nod] = 0 ;
while(!q.empty()) {
nod = q.front() ;
q.pop() ;
for(int j = 0 ; j < G[nod].size() ; j++) {
int nod_viz = G[nod][j] ;
if(viz[nod_viz] == 0) {
viz[nod_viz] = cc ;
d[nod_viz] = d[nod] + 1 ;
q.push(nod_viz) ;
}
}
}
}
int main() {
int x , y ;
fin >> n >> m >> s;
for(int i = 1 ; i<=m ; i++) {
fin >> x >> y ;
G[x].push_back(y) ;
}
viz.assign(n+1 , 0) ;
d.assign(n+1 , -1) ;
bfs(s , 1) ;
for(int i = 1 ;i<=n ;i++)
fout << d[i] << " " ;
return 0;
}