Pagini recente » Cod sursa (job #2093788) | Cod sursa (job #2624129) | Cod sursa (job #1839302) | Cod sursa (job #3303588) | Cod sursa (job #3302548)
#include <bits/stdc++.h>
using namespace std;
#define MAX_N (int)1e5
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int num_nodes,num_edges,s;
int dist[MAX_N+1],vis[MAX_N+1];
vector<int>adj[MAX_N+1];
void init_dist() {
for(int i=1; i<=num_nodes; i++) {
dist[i]=-1;
}
}
void bfs() {
init_dist();
queue<int>q;
q.push(s);
dist[s]=0;
vis[s]=1;
while(!q.empty()) {
int v=q.front();
q.pop();
for(auto u:adj[v]) {
if(!vis[u]) {
dist[u]=dist[v]+1;
q.push(u);
vis[u]=1;
}
}
}
}
int main() {
fin>>num_nodes>>num_edges>>s;
while(num_edges--) {
int v,u;
fin>>v>>u;
adj[v].push_back(u);
}
bfs();
for(int i=1; i<=num_nodes; i++) {
fout<<dist[i]<<' ';
}
return 0;
}