Pagini recente » Cod sursa (job #1726594) | Cod sursa (job #2854022) | Cod sursa (job #3123335) | Cod sursa (job #2468842) | Cod sursa (job #2243836)
#include <bits/stdc++.h>
using namespace std;
vector <long > graff[100001];
bool visited [100010];
int cost [100001];
queue <int > qq;
int main() {
ifstream f("bfs.in");
ofstream g("bfs.out");
int n, m, s;
f >> n >> m >> s;
for (int i = 1; i <= n; i ++) {
int x, y;
f >> x >> y;
graff[x].push_back(y);
}
visited[s] = true;
qq.push(s);
for ( int i = 1 ; i <= n; i++){
cost[i] = (1 << 30);
}
cost[s] = 0;
while (!qq.empty()){
int frontValue = qq.front();
// g << frontValue << " ";
qq.pop();
for ( auto vecin : graff[frontValue]){
/* if (visited[vecin] == false){
visited[vecin] = true;
}*/
if ( cost [vecin] > cost[frontValue] + 1){
cost[vecin] = cost[frontValue] + 1;
qq.push(vecin);
}
}
}
for ( auto &x : cost){
if( x == (1 << 30)){
x = -1;
}
}
for (int i =1; i<= n; i++){
g << cost[i] << " ";
}
return 0;
}