Submission #1144646

#TimeUsernameProblemLanguageResultExecution timeMemory
1144646Can_I_Put_ma_ballz저장 (Saveit) (IOI10_saveit)C++20
0 / 100
763 ms46976 KiB
#include <bits/stdc++.h>
#include "grader.h"
#include "encoder.h"

using u8 = uint8_t;

void encode_byte(u8 bits) {
    for (int i = 0; i < 8; ++i)
        encode_bit((bits >> i) & 1);
}

void encode_varint(int x) {
    do {
        u8 byte = x & ((1 << 7) - 1);
        x >>= 7;
        if (x != 0)
            byte |= 1 << 7;
        encode_byte(byte);
    } while (x != 0);
}

void encode(int nv, int nh, int ne, int *v1, int *v2){
    encode_varint(ne);
    for (int i = 0; i < ne ; ++i) {
        encode_varint(v1[i]);
        encode_varint(v2[i]);
    }
    return;
}
#include <bits/stdc++.h>
#include "grader.h"
#include "decoder.h"

using u8 = uint8_t;

template<typename T> using Vec = std::vector<T>;

Vec<int> bfs(int hub, int nv, const Vec<Vec<int>>& giraffe) {
   const int invalid = -1;

   Vec<int> dist(nv);
   std::fill(dist.begin(), dist.end(), invalid);

   std::queue<std::pair<int, int>> q; q.emplace(hub, 0);

   while (!q.empty()) {
      auto [u, distance] = q.front(); q.pop();
      if (dist[u] != invalid) continue;
      dist[u] = distance++;
      for (const auto& v : giraffe[u]) {
         q.emplace(v, distance);
      }
   }

   return dist;
}


u8 decode_byte() {
   u8 byte = 0;
   for (int i = 7; i >= 0; --i)
      byte |= decode_bit() << i;
   return byte;
}

int decode_varint() {
   int result = 0;
   u8 shift = 0;
   while (true) {
      u8 byte = decode_byte();
      result |= ((byte << 1) >> 1) << shift;
      if ((byte >> 7) == 0)
         break;
      shift += 7;
   }
   return result;
}

void decode(int nv, int nh) {
   int ne = decode_varint();
   Vec<Vec<int>> giraffe(nv);
   for (int i = 0; i < ne ; ++i) {
      int u = decode_varint();
      int v = decode_varint();
      giraffe[u].push_back(v);
      giraffe[v].push_back(u);
   }

   for (int hub = 0; hub < nh; hub++) {
      Vec<int> distances = bfs(hub, nv, giraffe);
      for (int i = 0; i < nv; ++i) {
         hops(hub, i, distances[i]);
      }
   }

}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...