Pagini recente » Cod sursa (job #1794027) | Cod sursa (job #1711125) | Cod sursa (job #2815542) | Cod sursa (job #2591966) | Cod sursa (job #2201911)
#include <bits/stdc++.h>
#define MAX 100005
using namespace std;
void read();
void print();
void bfs(int);
int dist[MAX];
vector<int> graph[MAX];
queue<int> q;
int N,M,S;
int x,y;
ifstream f("bfs.in");
ofstream g("bfs.out");
int main(){
read();
bfs(S);
print();
return 0;
}
void bfs(int start){
fill(dist+1,dist + N + 1,-1);
q.push(start);
dist[start] = 0;
while(!q.empty()){
int node = q.front();
q.pop();
for (int x : graph[node])
if(dist[x] == -1){
q.push(x);
dist[x] = dist[node] + 1;
}
}
}
void read(){
f>>N>>M>>S;
for(int i=1;i<=M;++i){
f>>x>>y;
graph[x].push_back(y);
}
}
void print(){
for(int i=1;i<=N;++i)
g<<dist[i]<<" ";
}