Pagini recente » Cod sursa (job #51420) | Cod sursa (job #2649835) | Cod sursa (job #59723) | Cod sursa (job #91399) | Cod sursa (job #2194242)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
vector<int> G[100002];
vector<int> dist;
queue<int> que;
void bfs(int s){
que.push(s);
dist[s] = 0;
while(!que.empty()){
int t = que.front();
for(int i = 0; i < G[t].size(); ++i){
if(dist[t] + 1 < dist[G[t][i]]){
dist[G[t][i]] = dist[t] + 1;
que.push(G[t][i]);
}
}
que.pop();
}
}
#define maxv 9999999
int main()
{
int n,m,s,a,b;
in >> n >> m >> s;
dist.assign(n+1,maxv);
for(int i = 0; i < m; i++){
in >> a >> b;
G[a].push_back(b);
}
bfs(s);
for(int i = 1; i <= n; i++){
if(dist[i] == maxv){
out << -1 << " ";
}else{
out << dist[i] << " ";
}
}
return 0;
}