Submission #1176311

#TimeUsernameProblemLanguageResultExecution timeMemory
1176311avighnaTwo Transportations (JOI19_transportations)C++20
0 / 100
135 ms1104 KiB
#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 += 29, j++) {
    ans[j] = std::stoi(s.substr(i, 29), 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 < 29; ++bt) {
      if (ans[i] & (1 << bt)) {
        SendB(true);
      } else {
        SendB(false);
      }
    }
  }
}

void ReceiveB(bool y) {}
#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...