제출 #1122369

#제출 시각아이디문제언어결과실행 시간메모리
1122369m_bezrutchkaTwo Transportations (JOI19_transportations)C++17
0 / 100
553 ms1120 KiB
#include "Azer.h"
#include <bits/stdc++.h>
using namespace std;

namespace az {
  const int MAXN = 2e3 + 10;
  const int INF = 1e9 + 7;
  using pii = pair<int, int>;
  vector<pii> adj[MAXN];
  int dist[MAXN];
  bool seen[MAXN];
  int n;
  int count;
  int cur_a, cur_b, cur_c;

  void dijkstra() {
    dist[0] = 0;
    seen[0] = true;
    for (int i = 1; i < n; i++) {
      dist[i] = INF;
      seen[i] = false;
    }
    set<pii> s;
    s.insert({0, 0});
    while (!s.empty()) {
      auto x = s.begin();
      int v = x->second;
      s.erase(x);
      seen[v] = true;
      for (auto [w, c]: adj[v]) {
        if (seen[w]) continue;
        if (dist[v] + c < dist[w]) {
          if (dist[w] != INF) s.erase({dist[w], w});
          dist[w] = dist[v] + c;
          s.insert({dist[w], w});
        }
      }
    }
  }
}

void InitA(int N, int A, std::vector<int> U, std::vector<int> V,
           std::vector<int> C) {
  az::n = N;
  az::count = 0;
  az::cur_a = az::cur_b = az::cur_c = 0;
}

void ReceiveA(bool x) {
  int cur = az::count;
  if (cur % 31 <= 10) {
    // first vertex
    int bit = cur % 31;
    if (x) az::cur_a += (1 << bit);
  } else if (cur % 31 <= 21) {
    int bit = cur % 31 - 11;
    if (x) az::cur_b += (1 << bit);
  } else {
    int bit = cur % 31 - 22;
    if (x) az::cur_c += (1 << bit);
  }
  if (cur % 31 == 30) {
    az::adj[az::cur_a].push_back({az::cur_b, az::cur_c});
    az::adj[az::cur_b].push_back({az::cur_a, az::cur_c});
    az::cur_a = az::cur_b = az::cur_c = 0;
  }
  az::count++;
}

std::vector<int> Answer() {
  std::vector<int> ans(az::n);
  az::dijkstra();
  for (int k = 0; k < az::n; ++k) {
    ans[k] = az::dist[k];
  }
  return ans;
}
#include "Baijan.h"
#include <bits/stdc++.h>
using namespace std;

namespace ba {
}

void send_vertex(int v) {
  for (int i = 0; i < 11; i++) {
    SendB((v & (1 << i)) ? true : false);
  }
}

void send_cost(int c) {
  for (int i = 0; i < 9; i++) {
    SendB((c & (1 << i)) ? true : false);
  }
}

void InitB(int N, int B, std::vector<int> S, std::vector<int> T,
           std::vector<int> D) {
  for (int i = 0; i < B; i++) {
    send_vertex(S[i]);
    send_vertex(T[i]);
    send_cost(D[i]);
  }
}

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