Pagini recente » Cod sursa (job #2867659) | Cod sursa (job #1745143) | Cod sursa (job #842899) | Cod sursa (job #2237794) | Cod sursa (job #2237790)
#include <bits/stdc++.h>
#define INF 10000001
using namespace std;
int num_nodes;
int num_edges;
int start;
vector<vector <int>> adj(100001);
vector<int> dist(100001);
int main() {
ifstream fin("bfs.in");
ofstream fout("bfs.out");
fin>>num_nodes>>num_edges>>start;
for(int i=1; i<=num_edges; i++) {
int src,dest;
fin>>src>>dest;
adj[src].push_back(dest);
}
fill(dist.begin(), dist.end(), INF);
queue <int> bfs;
bfs.push(start);
dist[start]=0;
while(!bfs.empty()) {
int current=bfs.front();
bfs.pop();
for(auto next:adj[current])
if(dist[current]+1<dist[next]) {
bfs.push(next);
dist[next]=dist[current]+1;
}
}
for(int i=1; i<=num_nodes; i++)
if(dist[i]==INF)
fout<<"-1 ";
else
fout<<dist[i]<<' ';
return 0;
}