Pagini recente » Cod sursa (job #396388) | Cod sursa (job #2899093) | Cod sursa (job #867965) | Cod sursa (job #205362) | Cod sursa (job #3319652)
/******************************************************************************
Online C++ Compiler.
Code, Compile, Run and Debug C++ program online.
Write your code in this editor and press "Run" button to compile and execute it.
*******************************************************************************/
#include <fstream>
#include<vector>
#include<climits>
#include<queue>
#include<unordered_set>
using namespace std ;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
int main()
{
int n , m , src , x , y ;
unordered_set<int> seen ;
cin >> n >>m >> src ;
vector<vector<int> > adj(n+1) ;
for(int i = 1 ; i <= m ; i ++ ){
cin>>x>>y;
adj[x].push_back(y);
}
vector<int> dist(n+1,INT_MAX);
queue <int> q ;
dist[src] = 0 ;
q.push(src) ;
while(!q.empty()){
int fr = q.front() ;
q.pop() ;
for(int num : adj[fr]){
if(dist[num] > dist[fr] + 1 ){
dist[num] = dist[fr] + 1 ;
}
if(!seen.count(num)){
seen.insert(num);
q.push(num);
}
}
}
for(int i = 1 ; i <= n ; i ++ ){
if(dist[i] == INT_MAX )
dist[i] = -1 ;
cout<<dist[i]<< ' ';
}
return 0;
}