Pagini recente » Cod sursa (job #2269406) | Cod sursa (job #2717728) | Cod sursa (job #2585182) | Cod sursa (job #2593172) | Cod sursa (job #2237789)
#include <bits/stdc++.h>
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);
}
for(int i=1; i<=num_nodes; i++)
dist[i]=9999999;
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]==9999999)
fout<<"-1 ";
else
fout<<dist[i]<<' ';
return 0;
}