#include "Azer.h"
#include <string>
#include <vector>
namespace {
std::string s;
int n;
} // namespace
void InitA(int N, int A, std::vector<int> U, std::vector<int> V,
std::vector<int> C) {
n = N;
}
void ReceiveA(bool x) { s.push_back(x + '0'); }
std::vector<int> Answer() {
std::vector<int> ans(n);
for (int i = 0, j = 0; i < s.length(); i += 20, j++) {
ans[j] = std::stoi(s.substr(i, 20), nullptr, 2);
}
return ans;
}
#include "Baijan.h"
#include <queue>
#include <vector>
void InitB(int N, int B, std::vector<int> S, std::vector<int> T,
std::vector<int> D) {
std::vector<std::vector<std::pair<int, int>>> adj(N);
for (int i = 0; i < B; ++i) {
adj[S[i]].push_back({T[i], D[i]});
adj[T[i]].push_back({S[i], D[i]});
}
std::vector<int> ans(N);
std::priority_queue<std::pair<int, int>> pq;
pq.push({0, 0});
std::vector<bool> vis(N);
while (!pq.empty()) {
auto [dist, node] = pq.top();
dist = -dist;
pq.pop();
if (vis[node]) {
continue;
}
vis[node] = true;
for (auto &[i, wt] : adj[node]) {
if (dist + wt < ans[i]) {
ans[i] = dist + wt;
pq.push({-ans[i], i});
}
}
}
for (int i = 0; i < N; ++i) {
for (int bt = 0; bt < 20; ++bt) {
if (ans[i] & (1 << bt)) {
SendB(true);
} else {
SendB(false);
}
}
}
}
void ReceiveB(bool y) {}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |