This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "grader.h"
#include "encoder.h"
#include <vector>
#include <queue>
void send_int(int x, int nb)
{
for (int j = 0; j < nb; ++j) encode_bit((x >> j) & 1);
}
#define N 1001
using namespace std;
vector<int> g[N];
int n, h;
vector<int> bfs(int u)
{
vector<int> d(n, 1e9);
queue<pair<int, int>> q;
q.emplace(d[u] = 0, u);
while (q.size())
{
auto [c, u] = q.front(); q.pop();
for (auto v : g[u])
{
if (c + 1 < d[v])
q.emplace(d[v] = c + 1, v);
}
}
return d;
}
void encode(int n0, int h0, int ne, int *v1, int *v2){
for (int i = 0; i < ne; ++i) g[v1[i]].push_back(v2[i]), g[v2[i]].push_back(v1[i]);
::n = n0; ::h = h0;
for (int i = 0; i < h; ++i)
{
auto d = bfs(i);
for (int j = 0; j < n; ++j)
send_int(d[j], 10);
}
return;
}
#include "grader.h"
#include "decoder.h"
unsigned read_int(int nb)
{
unsigned u = 0;
for (int j = 0; j < nb; ++j) u |= decode_bit() << j;
return u;
}
int n, h;
void decode(int v0, int h0) {
::n = v0; ::h = h0;
for (int i = 0; i < h; ++i)
{
for (int j = 0; j < n; ++j)
{
hops(i, j, read_int(10));
}
}
}
# | 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... |