Pagini recente » Cod sursa (job #2079100) | Cod sursa (job #2277107) | Cod sursa (job #1031128) | Cod sursa (job #2487696) | Cod sursa (job #957093)
Cod sursa(job #957093)
#include <fstream>
#include <cstdio>
#include <list>
#include <vector>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
int N,M,S,x,y;
int main (){
in >> N >> M >> S;
list<int> edges[N+1], q;
vector<int> dist(N+1,-1);
for( int i = 0 ; i < M; i++ ){
in >> x >> y;
edges[x].push_back(y);
}
dist[S] = 0;
q.push_back(S);
while(!q.empty()){
int u = q.front();
for( auto it = edges[u].begin(); it != edges[u].end(); it++ ){
if( dist[*it] == -1 ){
dist[*it] = dist[u] + 1;
q.push_back(*it);
}
}
q.pop_front();
}
for( int i = 1; i <= N; i++ )
out<< dist[i] << " ";
in.close();
out.close();
return 0;
}