Pagini recente » Cod sursa (job #1594249) | Cod sursa (job #1979827) | Cod sursa (job #1095976) | Cod sursa (job #1957748) | Cod sursa (job #1877396)
#include <bits/stdc++.h>
using namespace std;
constexpr int maxn = 1e5 + 100, maxv = 1e6 + 100;
ifstream f("bfs.in");
ofstream g("bfs.out");
vector<int> vec[maxn];
int dist[maxn], deq[maxn], *fr = deq, *bk = deq;
void bfs(const int start){
dist[start] = 0;
*bk++ = start;
while(fr != bk){
const int cur = *fr++;
for(const auto next : vec[cur])
if(dist[next] > dist[cur] + 1)
dist[next] = dist[cur]+1, *bk++ = next; } }
int main(){
int n, m, s;
f >> n >> m >> s;
memset(dist, 0x3f, sizeof(dist));
for(int i = 0, x, y; i < m; ++i){
f >> x >> y;
vec[x].push_back(y); }
bfs(s);
replace(dist, dist+maxn, 0x3f3f3f3f, -1);
copy_n(dist+1, n, ostream_iterator<int>(g, " "));
return 0; }