#include "bits/stdc++.h"
#include "grader.h"
using namespace std;
#define ll long long
#define forn(i,n) for(int i=0;i<n;i++)
#define all(v) v.begin(), v.end()
#define rall(v) v.rbegin(),v.rend()
#define pb push_back
#define sz(a) (int)a.size()
vector<int> bfs(int start, vector<vector<int>>& adj) {
int n = sz(adj);
vector<int> dist(n, -1);
dist[start] = 0;
queue<int> q;
q.push(start);
while(!q.empty()) {
int u = q.front();
q.pop();
for(int v: adj[u]) {
if(dist[v] == -1) {
dist[v] = dist[u] + 1;
q.push(v);
}
}
}
return dist;
}
void dfs(int u, vector<bool>& vis, vector<vector<int>>& adj, vector<int>& par) {
vis[u] = true;
for(int v: adj[u]) {
if(!vis[v]) {
par[v] = u;
dfs(v, vis, adj, par);
}
}
}
map<vector<int>, int> mp;
int amogus = 0;
void rec(vector<int> v) {
if(sz(v) == 3) {
if(mp.count(v)) return;
mp[v] = amogus++;
} else {
for(int i = 0; i <= 2; ++i) {
v.pb(i);
rec(v);
v.pop_back();
}
}
}
void encode(int n, int h, int m, int *v1, int *v2) {
assert(n != 1);
vector<vector<int>> adj(n);
for(int i = 0; i < m; ++i) {
adj[v1[i]].pb(v2[i]);
adj[v2[i]].pb(v1[i]);
}
vector<vector<int>> dist(n);
forn(i, n) dist[i] = bfs(i, adj);
for(int i = 0;i < h; ++i) {
for(int j = 0; j < 10; ++j) {
if(dist[0][i] & (1 << j)) encode_bit(1);
else encode_bit(0);
}
}
vector<bool> vis(n, false);
vector<int> parent(n);
iota(all(parent), 0);
dfs(0, vis, adj, parent);
for(int i = 1; i < n; ++i) {
for(int j = 0; j < 10; ++j) {
if(parent[i] & (1 << j)) encode_bit(1);
else encode_bit(0);
}
}
//dist[node][i] = dist[parent[node]][i] (0)
//dist[node][i] = dist[parent[node]][i] - 1 (1)
//dist[node][i] = dist[parent[node]][i] + 1 (2)
rec({});
vector<int> v;
for(int j = 0; j < h; ++j) {
for(int i = 1; i < n; ++i) {
if(dist[i][j] == dist[parent[i]][j]) v.pb(0);
else if(dist[i][j] == dist[parent[i]][j] - 1) v.pb(1);
else v.pb(2);
}
}
for(int i = 0; i + 2 < sz(v); i += 3) {
for(int f = 0; f < 5; ++f) {
if(mp[{v[i], v[i + 1], v[i + 2]}] & (1 << f)) {
encode_bit(1);
} else encode_bit(0);
}
}
if(sz(v) % 3 == 1) {
for(int f = 0; f < 2; ++f) {
if(v.back() & (1 << f)) encode_bit(1);
else encode_bit(0);
}
} else if(sz(v) % 3 == 2) {
for(int k = sz(v) - 2; k < sz(v); ++k) {
for(int f = 0; f < 2; ++f) {
if(v[k] & (1 << f)) encode_bit(1);
else encode_bit(0);
}
}
}
}
/*
void solve() {
}
int32_t main() {
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int t = 1;
//cin >> t;
while(t--) {
solve();
}
}
*/
#include "bits/stdc++.h"
#include "grader.h"
#include "decoder.h"
using namespace std;
#define ll long long
#define forn(i,n) for(int i=0;i<n;i++)
#define all(v) v.begin(), v.end()
#define rall(v) v.rbegin(),v.rend()
#define pb push_back
#define sz(a) (int)a.size()
const int N = 1000;
int dist[N][40], type[N][40];
vector<int> adj[N];
map<vector<int>, int> mp;
int amogus = 0;
map<int, vector<int>> Paiu;
void rec(vector<int> v) {
if(sz(v) == 3) {
if(mp.count(v)) return;
mp[v] = amogus;
Paiu[amogus] = v;
++amogus;
} else {
for(int i = 0; i <= 2; ++i) {
v.pb(i);
rec(v);
v.pop_back();
}
}
}
void dfs(int u, int par, int h) {
for(int v: adj[u]) {
if(v == par) continue;
for(int j = 0; j < h; ++j) {
if(type[v][j] == 0) dist[v][j] = dist[u][j];
else if(type[v][j] == 1) dist[v][j] = dist[u][j] - 1;
else dist[v][j] = dist[u][j] + 1;
}
dfs(v, u, h);
}
}
void decode(int n, int h) {
assert(n != 1);
for(int i = 0; i < h; ++i) {
for(int j = 0; j < 10; ++j) {
if(decode_bit()) dist[0][i] += (1 << j);
}
}
for(int i = 1;i < n; ++i) {
int node = 0;
for(int j = 0; j < 10; ++j) {
if(decode_bit()) node += (1 << j);
}
if(node != i) adj[node].pb(i);
}
rec({});
vector<pair<int, int>> v;
for(int j = 0; j < h; ++j) {
for(int i = 1; i < n; ++i) {
v.pb({i, j});
}
}
for(int i = 0; i + 2 < sz(v); i += 3) {
int number = 0;
for(int f = 0; f < 5; ++f) {
if(decode_bit()) number += (1 << f);
}
vector<int> f = Paiu[number];
type[v[i].first][v[i].second] = f[0];
type[v[i + 1].first][v[i + 1].second] = f[1];
type[v[i + 2].first][v[i + 2].second] = f[2];
}
if(sz(v) % 3 == 1) {
for(int f = 0; f < 2; ++f) {
if(decode_bit()) type[v[sz(v) - 1].first][v[sz(v) - 1].second] += (1 << f);
}
} else if(sz(v) % 3 == 2) {
for(int k = n - 2; k < n; ++k) {
for(int f = 0; f < 2; ++f) {
if(decode_bit()) type[v[k].first][v[k].second] += (1 << f);
}
}
}
dfs(0, -1, h);
for(int i = 0; i < h; ++i) {
for(int j = 0; j < n; ++j) {
hops(i, j, dist[j][i]);
}
}
}
/*
void solve() {
}
int32_t main() {
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int t = 1;
//cin >> t;
while(t--) {
solve();
}
}
*/
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
666 ms |
15356 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
2 |
Correct |
2 ms |
4612 KB |
Output is correct - 90 call(s) of encode_bit() |
3 |
Correct |
55 ms |
9500 KB |
Output is correct - 63290 call(s) of encode_bit() |
4 |
Incorrect |
3 ms |
4604 KB |
Output isn't correct |
5 |
Correct |
68 ms |
9708 KB |
Output is correct - 63290 call(s) of encode_bit() |
6 |
Correct |
71 ms |
10544 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
7 |
Correct |
120 ms |
10960 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
8 |
Correct |
48 ms |
10028 KB |
Output is correct - 67560 call(s) of encode_bit() |
9 |
Correct |
52 ms |
10264 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
10 |
Correct |
54 ms |
10208 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
11 |
Correct |
69 ms |
10448 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
12 |
Correct |
44 ms |
10380 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
13 |
Correct |
153 ms |
11112 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
14 |
Correct |
48 ms |
10464 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
15 |
Correct |
52 ms |
10512 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
16 |
Correct |
119 ms |
10960 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
17 |
Correct |
111 ms |
10948 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
18 |
Correct |
145 ms |
11224 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
19 |
Correct |
92 ms |
10776 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
20 |
Correct |
173 ms |
11424 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
21 |
Correct |
205 ms |
11724 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
22 |
Correct |
135 ms |
11036 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
23 |
Correct |
213 ms |
11832 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
666 ms |
15356 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
2 |
Correct |
2 ms |
4612 KB |
Output is correct - 90 call(s) of encode_bit() |
3 |
Correct |
55 ms |
9500 KB |
Output is correct - 63290 call(s) of encode_bit() |
4 |
Incorrect |
3 ms |
4604 KB |
Output isn't correct |
5 |
Correct |
68 ms |
9708 KB |
Output is correct - 63290 call(s) of encode_bit() |
6 |
Correct |
71 ms |
10544 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
7 |
Correct |
120 ms |
10960 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
8 |
Correct |
48 ms |
10028 KB |
Output is correct - 67560 call(s) of encode_bit() |
9 |
Correct |
52 ms |
10264 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
10 |
Correct |
54 ms |
10208 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
11 |
Correct |
69 ms |
10448 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
12 |
Correct |
44 ms |
10380 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
13 |
Correct |
153 ms |
11112 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
14 |
Correct |
48 ms |
10464 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
15 |
Correct |
52 ms |
10512 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
16 |
Correct |
119 ms |
10960 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
17 |
Correct |
111 ms |
10948 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
18 |
Correct |
145 ms |
11224 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
19 |
Correct |
92 ms |
10776 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
20 |
Correct |
173 ms |
11424 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
21 |
Correct |
205 ms |
11724 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
22 |
Correct |
135 ms |
11036 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
23 |
Correct |
213 ms |
11832 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
666 ms |
15356 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
2 |
Correct |
2 ms |
4612 KB |
Output is correct - 90 call(s) of encode_bit() |
3 |
Correct |
55 ms |
9500 KB |
Output is correct - 63290 call(s) of encode_bit() |
4 |
Incorrect |
3 ms |
4604 KB |
Output isn't correct |
5 |
Correct |
68 ms |
9708 KB |
Output is correct - 63290 call(s) of encode_bit() |
6 |
Correct |
71 ms |
10544 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
7 |
Correct |
120 ms |
10960 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
8 |
Correct |
48 ms |
10028 KB |
Output is correct - 67560 call(s) of encode_bit() |
9 |
Correct |
52 ms |
10264 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
10 |
Correct |
54 ms |
10208 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
11 |
Correct |
69 ms |
10448 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
12 |
Correct |
44 ms |
10380 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
13 |
Correct |
153 ms |
11112 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
14 |
Correct |
48 ms |
10464 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
15 |
Correct |
52 ms |
10512 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
16 |
Correct |
119 ms |
10960 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
17 |
Correct |
111 ms |
10948 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
18 |
Correct |
145 ms |
11224 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
19 |
Correct |
92 ms |
10776 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
20 |
Correct |
173 ms |
11424 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
21 |
Correct |
205 ms |
11724 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
22 |
Correct |
135 ms |
11036 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
23 |
Correct |
213 ms |
11832 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
666 ms |
15356 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
2 |
Correct |
2 ms |
4612 KB |
Output is correct - 90 call(s) of encode_bit() |
3 |
Correct |
55 ms |
9500 KB |
Output is correct - 63290 call(s) of encode_bit() |
4 |
Incorrect |
3 ms |
4604 KB |
Output isn't correct |
5 |
Correct |
68 ms |
9708 KB |
Output is correct - 63290 call(s) of encode_bit() |
6 |
Correct |
71 ms |
10544 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
7 |
Correct |
120 ms |
10960 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
8 |
Correct |
48 ms |
10028 KB |
Output is correct - 67560 call(s) of encode_bit() |
9 |
Correct |
52 ms |
10264 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
10 |
Correct |
54 ms |
10208 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
11 |
Correct |
69 ms |
10448 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
12 |
Correct |
44 ms |
10380 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
13 |
Correct |
153 ms |
11112 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
14 |
Correct |
48 ms |
10464 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
15 |
Correct |
52 ms |
10512 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
16 |
Correct |
119 ms |
10960 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
17 |
Correct |
111 ms |
10948 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
18 |
Correct |
145 ms |
11224 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
19 |
Correct |
92 ms |
10776 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
20 |
Correct |
173 ms |
11424 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
21 |
Correct |
205 ms |
11724 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
22 |
Correct |
135 ms |
11036 KB |
Output is partially correct - 70290 call(s) of encode_bit() |
23 |
Correct |
213 ms |
11832 KB |
Output is partially correct - 70290 call(s) of encode_bit() |