답안 #836330

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
836330 2023-08-24T10:18:40 Z unnick Two Transportations (JOI19_transportations) C++14
8 / 100
450 ms 28776 KB
#include "Azer.h"
#include <iostream>
#include <vector>
#include <queue>

using namespace std;

typedef struct {
  int to;
  int w;
} edge_t;

namespace {

int N;
int bit_idx = 0;
vector<bool> bits;
vector< vector<edge_t> > vts;

bool read_bool() {
  return bits[bit_idx++];
}
int read_int(int b) {
  int x = 0;
  for (int i = 0; i < b; i++) {
    x += ((int) read_bool()) << i;
  }
  return x;
}

}  // namespace

void InitA(int N, int A, std::vector<int> U, std::vector<int> V,
           std::vector<int> C) {
  ::N = N;
  for (int i = 0; i < N; i++) {
    vector<edge_t> tmp;
    vts.push_back(tmp);
  }
  for (int i = 0; i < A; i++) {
    vts[U[i]].push_back({.to = V[i], .w = C[i]});
    vts[V[i]].push_back({.to = U[i], .w = C[i]});
  }
}

void ReceiveA(bool x) {
  bits.push_back(x);
}

std::vector<int> Answer() {
  while (bit_idx < bits.size()) {
    int u = read_int(11);
    int v = read_int(11);
    int c = read_int(9);

    vts[u].push_back({.to = v, .w = c});
    vts[v].push_back({.to = u, .w = c});
  }
  vector<int> ans(N,2000000000);
  ans[0] = 0;
  auto cmp = [](edge_t a, edge_t b){
    return a.w>b.w;
  };
  vector<bool> visited(N, false);
  priority_queue<edge_t, vector<edge_t>, decltype(cmp)> queue(cmp);
  queue.push({.to=0, .w=0});
  while (!queue.empty()) {
    edge_t e = queue.top();
    queue.pop();
    if (visited[e.to]) continue;
    visited[e.to] = true;
    ans[e.to] = e.w;
    for (edge_t e2 : vts[e.to]) {
      // if (visited[e2.to]) continue;
      e2.w += e.w;
      queue.push(e2);
    }
  }
  return ans;
}
#include "Baijan.h"
#include <vector>

namespace {

// int N;
// int count;

// bool FunctionExample(bool P) {
//   return !P;
// }

void send_int(int x, int b) {
  for (int i = 0; i < b; i++) {
    SendB((x>>i)&1);
  }
}

}  // namespace

void InitB(int N, int B, std::vector<int> S, std::vector<int> T,
           std::vector<int> D) {
  // ::N = N;
  // count = 0;
  for (int i = 0; i < B; i++) {
    send_int(S[i], 11);
    send_int(T[i], 11);
    send_int(D[i], 9);
  };
}

void ReceiveB(bool y) {
  // ++count;
  // if (count < 58000) {
  //   SendB(FunctionExample(y));
  //   ++count;
  // }
}

Compilation message

Azer.cpp: In function 'std::vector<int> Answer()':
Azer.cpp:51:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<bool>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   51 |   while (bit_idx < bits.size()) {
      |          ~~~~~~~~^~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 388 KB Wrong Answer [2]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 400 KB Output is correct
2 Correct 138 ms 740 KB Output is correct
3 Correct 192 ms 792 KB Output is correct
4 Correct 337 ms 27520 KB Output is correct
5 Correct 223 ms 28436 KB Output is correct
6 Correct 167 ms 628 KB Output is correct
7 Correct 450 ms 28776 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 161 ms 728 KB Output is correct
2 Correct 1 ms 400 KB Output is correct
3 Runtime error 0 ms 328 KB Execution killed with signal 13
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 93 ms 536 KB Output is correct
2 Correct 150 ms 656 KB Output is correct
3 Runtime error 28 ms 6672 KB Execution killed with signal 13
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 93 ms 536 KB Output is correct
2 Correct 150 ms 656 KB Output is correct
3 Runtime error 28 ms 6672 KB Execution killed with signal 13
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 93 ms 536 KB Output is correct
2 Correct 150 ms 656 KB Output is correct
3 Runtime error 28 ms 6672 KB Execution killed with signal 13
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 388 KB Wrong Answer [2]
2 Halted 0 ms 0 KB -