제출 #520244

#제출 시각아이디문제언어결과실행 시간메모리
520244KoDBirmingham (COCI20_birmingham)C++17
70 / 70
106 ms10564 KiB
#include <bits/stdc++.h> using std::vector; using std::array; using std::tuple; using std::pair; int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr); int N, M, Q, K; std::cin >> N >> M >> Q >> K; vector<int> dist(N, -1); std::queue<int> que; const auto push = [&](const int u, const int d) { if (dist[u] == -1) { dist[u] = d; que.push(u); } }; while (Q--) { int u; std::cin >> u; push(u - 1, 0); } vector<vector<int>> graph(N); while (M--) { int a, b; std::cin >> a >> b; a -= 1, b -= 1; graph[a].push_back(b); graph[b].push_back(a); } while (!que.empty()) { const int u = que.front(); que.pop(); for (const int v : graph[u]) { push(v, dist[u] + 1); } } vector<int> time(N); for (int l = 1, k = 1; l < N; ++k) { const int r = std::min(N, l + k * K); for (int i = l; i < r; ++i) { time[i] = k; } l = r; } for (int i = 0; i < N; ++i) { std::cout << time[dist[i]] << " \n"[i + 1 == N]; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...