#include "Azer.h"
#include <bits/stdc++.h>
#define pb push_back
#define all(v) ((v).begin(), (v).end())
#define sortv(v) sort(all(v))
#define sz(v) ((int)(v).size())
#define uniqv(v) (v).erase(unique(all(v)), (v).end())
#define umax(a, b) (a)=max((a), (b))
#define umin(a, b) (a)=min((a), (b))
#define FOR(i,a,b) for(int i = (a); i <= (b); i++)
#define rep(i,n) FOR(i,1,n)
#define rep0(i,n) FOR(i,0,(int)(n)-1)
#define FI first
#define SE second
#define INF 2000000
#define INFLL 1000000000000000000LL
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int MAX_N = 2000;
const int LOG_N = 11;
const int LOG_D = 9;
namespace {
int N;
vector<pii> gp[MAX_N+1];
int dist[MAX_N+1];
int vst[MAX_N+1];
int n=0, d=0, cnt=0;
int mx;
int n2=0, d2=0;
bool finish = false;
int two = 1;
void calc(){
vst[n] = true;
mx = 0;
for(int i=0; i<N; i++){
if(!vst[i]) continue;
mx = max(mx, dist[i]);
}
for(int i=0; i<gp[n].size(); i++){
if(dist[gp[n][i].first]>dist[n] + gp[n][i].second){
dist[gp[n][i].first] = dist[n] + gp[n][i].second;
}
}
n2 = 0;
d2 = INF+1;
finish = true;
for(int i=0; i<N; i++){
if(!vst[i]) finish = false;
if(vst[i]) continue;
if(dist[i] < d2){
d2 = dist[i];
n2 = i;
}
}
if(finish){
Answer();
return;
}
d2 -= mx;
d2 = min(d2, (1<<9)-1);
//cout<<"SendA "<<d2<<endl;
for(int i=0; i<LOG_D; i++){
SendA((bool)(d2%2)); d2/=2;
}
}
void make_ans(){
dist[n] = d;
calc();
n = d = cnt = 0;
two = 1;
}
void send_idx(){
//cout<<"SendA "<<n2<<endl;
n = n2;
for(int i=0; i<LOG_N; i++){
SendA((bool)(n2%2)); n2/=2;
}
calc();
}
}
void InitA(int N, int A, vector<int> U, vector<int> V, vector<int> C) {
::N = N;
for (int i = 0; i < A; ++i) {
gp[U[i]].pb({V[i], C[i]});
gp[V[i]].pb({U[i], C[i]});
}
vst[0] = 1;
dist[0] = 0;
for(int i=1; i<N; i++){
dist[i] = INF;
}
mx = 0;
calc();
}
void ReceiveA(bool x) {
if(cnt<LOG_D){
d += (int)x * two;
two*=2;
}else if(cnt < LOG_D+LOG_N){
n += (int)x * two;
two*=2;
}
cnt++;
if(cnt==LOG_D){
if(d > 500){
send_idx();
n = d = cnt = 0;
}
two = 1;
}
if(cnt==LOG_D+LOG_N){
d+=mx;
make_ans();
}
}
vector<int> Answer() {
vector<int> ans(N);
for(int i=0; i<N; i++){
ans[i] = dist[i];
}
return ans;
}
#include "Baijan.h"
#include <bits/stdc++.h>
#define pb push_back
#define all(v) ((v).begin(), (v).end())
#define sortv(v) sort(all(v))
#define sz(v) ((int)(v).size())
#define uniqv(v) (v).erase(unique(all(v)), (v).end())
#define umax(a, b) (a)=max((a), (b))
#define umin(a, b) (a)=min((a), (b))
#define FOR(i,a,b) for(int i = (a); i <= (b); i++)
#define rep(i,n) FOR(i,1,n)
#define rep0(i,n) FOR(i,0,(int)(n)-1)
#define FI first
#define SE second
#define INF 2000000000
#define INFLL 1000000000000000000LL
using namespace std;
const int MAX_N = 2000;
const int LOG_N = 11;
const int LOG_D = 9;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
namespace {
int N;
vector<pii> gp[MAX_N+1];
int dist[MAX_N+1];
int vst[MAX_N+1];
int mx;
int n=0, d=0, cnt=0;
int n2=0, d2=0;
int two = 1;
bool finish = false;
void calc2(){
mx = 0;
for(int i=0; i<N; i++){
if(!vst[i]) continue;
mx = max(mx, dist[i]);
}
for(int i=0; i<gp[n].size(); i++){
if(dist[gp[n][i].first]>dist[n] + gp[n][i].second){
dist[gp[n][i].first] = dist[n] + gp[n][i].second;
}
}
n2 = 0;
d2 = INF+1;
for(int i=0; i<N; i++){
if(vst[i]) continue;
if(dist[i] < d2){
d2 = dist[i];
n2 = i;
}
}
}
void make_ans2(){
vst[n] = true;
dist[n] = d;
//cout<<"*"<<n<<" "<<d<<" "<<mx<<endl<<endl;
mx = 0;
calc2();
//cout<<"*"<<n<<" "<<d<<" "<<mx<<endl;
cnt = 0;
}
}
void InitB(int N, int B, vector<int> S, vector<int> T, vector<int> D) {
if(N==1) return;
::N = N;
for(int i=0; i<B; i++){
gp[S[i]].pb({T[i], D[i]});
gp[T[i]].pb({S[i], D[i]});
}
vst[0] = true;
for(int i=1; i<N; i++) dist[i] = INF;
mx = 0;
calc2();
cnt = 0;
}
void ReceiveB(bool y) {
if(cnt==0){
n = d = 0;
two = 1;
}
//cout<<"#"<<cnt<<" "<<y<<endl;
if(cnt<LOG_D){
d += (int)y*two;
}else if(cnt<LOG_D+LOG_N){
n += (int)y*two;
}
two*=2;
cnt++;
if(cnt==LOG_D){
two = 1;
d += mx;
if(d<d2){
//cout<<"SendB 255"<<endl;
for(int i=0; i<LOG_D; i++){
SendB(1);
}
}else{
d2-=mx;
//cout<<"SendB "<<d2<<endl;
for(int i=0; i<LOG_D; i++){
SendB((bool)(d2%2)); d2/=2;
}
//cout<<"SendB "<<n2<<endl;
n = n2;
vst[n] = true;
for(int i=0; i<LOG_N; i++){
SendB((bool)(n2%2)); n2/=2;
}
calc2();
cnt = 0;
}
}
if(cnt==LOG_D+LOG_N){
make_ans2();
}
}
Compilation message
Azer.cpp: In function 'void {anonymous}::calc()':
Azer.cpp:50:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i=0; i<gp[n].size(); i++){
~^~~~~~~~~~~~~
Baijan.cpp: In function 'void {anonymous}::calc2()':
Baijan.cpp:47:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i=0; i<gp[n].size(); i++){
~^~~~~~~~~~~~~
Baijan.cpp: At global scope:
Baijan.cpp:39:10: warning: '{anonymous}::finish' defined but not used [-Wunused-variable]
bool finish = false;
^~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
964 ms |
1504 KB |
Output is correct |
2 |
Correct |
3 ms |
1504 KB |
Output is correct |
3 |
Correct |
1010 ms |
1512 KB |
Output is correct |
4 |
Correct |
1276 ms |
20120 KB |
Output is correct |
5 |
Correct |
78 ms |
1480 KB |
Output is correct |
6 |
Correct |
1058 ms |
4416 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
8 ms |
1248 KB |
Output is correct |
2 |
Correct |
1152 ms |
1896 KB |
Output is correct |
3 |
Correct |
1176 ms |
1848 KB |
Output is correct |
4 |
Correct |
1524 ms |
55200 KB |
Output is correct |
5 |
Correct |
1454 ms |
48280 KB |
Output is correct |
6 |
Correct |
124 ms |
1376 KB |
Output is correct |
7 |
Correct |
1374 ms |
48208 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1092 ms |
1672 KB |
Output is correct |
2 |
Correct |
8 ms |
1248 KB |
Output is correct |
3 |
Correct |
1000 ms |
1480 KB |
Output is correct |
4 |
Correct |
928 ms |
1568 KB |
Output is correct |
5 |
Correct |
1166 ms |
1760 KB |
Output is correct |
6 |
Correct |
1176 ms |
1664 KB |
Output is correct |
7 |
Correct |
970 ms |
1952 KB |
Output is correct |
8 |
Correct |
816 ms |
1608 KB |
Output is correct |
9 |
Correct |
1177 ms |
1488 KB |
Output is correct |
10 |
Correct |
1002 ms |
1520 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
518 ms |
1104 KB |
Output is correct |
2 |
Correct |
389 ms |
1320 KB |
Output is correct |
3 |
Correct |
618 ms |
23584 KB |
Output is correct |
4 |
Correct |
364 ms |
1504 KB |
Output is correct |
5 |
Correct |
674 ms |
17208 KB |
Output is correct |
6 |
Correct |
522 ms |
1376 KB |
Output is correct |
7 |
Correct |
468 ms |
1664 KB |
Output is correct |
8 |
Correct |
456 ms |
1776 KB |
Output is correct |
9 |
Correct |
788 ms |
35992 KB |
Output is correct |
10 |
Correct |
840 ms |
35808 KB |
Output is correct |
11 |
Correct |
1016 ms |
61296 KB |
Output is correct |
12 |
Correct |
976 ms |
53512 KB |
Output is correct |
13 |
Correct |
370 ms |
1760 KB |
Output is correct |
14 |
Correct |
4 ms |
968 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
518 ms |
1104 KB |
Output is correct |
2 |
Correct |
389 ms |
1320 KB |
Output is correct |
3 |
Correct |
618 ms |
23584 KB |
Output is correct |
4 |
Correct |
364 ms |
1504 KB |
Output is correct |
5 |
Correct |
674 ms |
17208 KB |
Output is correct |
6 |
Correct |
522 ms |
1376 KB |
Output is correct |
7 |
Correct |
468 ms |
1664 KB |
Output is correct |
8 |
Correct |
456 ms |
1776 KB |
Output is correct |
9 |
Correct |
788 ms |
35992 KB |
Output is correct |
10 |
Correct |
840 ms |
35808 KB |
Output is correct |
11 |
Correct |
1016 ms |
61296 KB |
Output is correct |
12 |
Correct |
976 ms |
53512 KB |
Output is correct |
13 |
Correct |
370 ms |
1760 KB |
Output is correct |
14 |
Correct |
4 ms |
968 KB |
Output is correct |
15 |
Correct |
616 ms |
1512 KB |
Output is correct |
16 |
Correct |
420 ms |
1784 KB |
Output is correct |
17 |
Correct |
632 ms |
1552 KB |
Output is correct |
18 |
Correct |
824 ms |
17432 KB |
Output is correct |
19 |
Correct |
634 ms |
1656 KB |
Output is correct |
20 |
Correct |
626 ms |
17736 KB |
Output is correct |
21 |
Correct |
604 ms |
1672 KB |
Output is correct |
22 |
Correct |
528 ms |
1672 KB |
Output is correct |
23 |
Correct |
840 ms |
43944 KB |
Output is correct |
24 |
Correct |
886 ms |
43696 KB |
Output is correct |
25 |
Correct |
1228 ms |
75096 KB |
Output is correct |
26 |
Correct |
1052 ms |
64216 KB |
Output is correct |
27 |
Correct |
528 ms |
1696 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
518 ms |
1104 KB |
Output is correct |
2 |
Correct |
389 ms |
1320 KB |
Output is correct |
3 |
Correct |
618 ms |
23584 KB |
Output is correct |
4 |
Correct |
364 ms |
1504 KB |
Output is correct |
5 |
Correct |
674 ms |
17208 KB |
Output is correct |
6 |
Correct |
522 ms |
1376 KB |
Output is correct |
7 |
Correct |
468 ms |
1664 KB |
Output is correct |
8 |
Correct |
456 ms |
1776 KB |
Output is correct |
9 |
Correct |
788 ms |
35992 KB |
Output is correct |
10 |
Correct |
840 ms |
35808 KB |
Output is correct |
11 |
Correct |
1016 ms |
61296 KB |
Output is correct |
12 |
Correct |
976 ms |
53512 KB |
Output is correct |
13 |
Correct |
370 ms |
1760 KB |
Output is correct |
14 |
Correct |
4 ms |
968 KB |
Output is correct |
15 |
Correct |
616 ms |
1512 KB |
Output is correct |
16 |
Correct |
420 ms |
1784 KB |
Output is correct |
17 |
Correct |
632 ms |
1552 KB |
Output is correct |
18 |
Correct |
824 ms |
17432 KB |
Output is correct |
19 |
Correct |
634 ms |
1656 KB |
Output is correct |
20 |
Correct |
626 ms |
17736 KB |
Output is correct |
21 |
Correct |
604 ms |
1672 KB |
Output is correct |
22 |
Correct |
528 ms |
1672 KB |
Output is correct |
23 |
Correct |
840 ms |
43944 KB |
Output is correct |
24 |
Correct |
886 ms |
43696 KB |
Output is correct |
25 |
Correct |
1228 ms |
75096 KB |
Output is correct |
26 |
Correct |
1052 ms |
64216 KB |
Output is correct |
27 |
Correct |
528 ms |
1696 KB |
Output is correct |
28 |
Correct |
642 ms |
1768 KB |
Output is correct |
29 |
Correct |
696 ms |
1360 KB |
Output is correct |
30 |
Correct |
1036 ms |
41712 KB |
Output is correct |
31 |
Correct |
528 ms |
1640 KB |
Output is correct |
32 |
Correct |
1008 ms |
37288 KB |
Output is correct |
33 |
Correct |
812 ms |
1664 KB |
Output is correct |
34 |
Correct |
644 ms |
1872 KB |
Output is correct |
35 |
Correct |
582 ms |
1688 KB |
Output is correct |
36 |
Correct |
1074 ms |
49104 KB |
Output is correct |
37 |
Correct |
1232 ms |
49016 KB |
Output is correct |
38 |
Correct |
1674 ms |
85288 KB |
Output is correct |
39 |
Correct |
1236 ms |
78424 KB |
Output is correct |
40 |
Correct |
882 ms |
1792 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
964 ms |
1504 KB |
Output is correct |
2 |
Correct |
3 ms |
1504 KB |
Output is correct |
3 |
Correct |
1010 ms |
1512 KB |
Output is correct |
4 |
Correct |
1276 ms |
20120 KB |
Output is correct |
5 |
Correct |
78 ms |
1480 KB |
Output is correct |
6 |
Correct |
1058 ms |
4416 KB |
Output is correct |
7 |
Correct |
8 ms |
1248 KB |
Output is correct |
8 |
Correct |
1152 ms |
1896 KB |
Output is correct |
9 |
Correct |
1176 ms |
1848 KB |
Output is correct |
10 |
Correct |
1524 ms |
55200 KB |
Output is correct |
11 |
Correct |
1454 ms |
48280 KB |
Output is correct |
12 |
Correct |
124 ms |
1376 KB |
Output is correct |
13 |
Correct |
1374 ms |
48208 KB |
Output is correct |
14 |
Correct |
1092 ms |
1672 KB |
Output is correct |
15 |
Correct |
8 ms |
1248 KB |
Output is correct |
16 |
Correct |
1000 ms |
1480 KB |
Output is correct |
17 |
Correct |
928 ms |
1568 KB |
Output is correct |
18 |
Correct |
1166 ms |
1760 KB |
Output is correct |
19 |
Correct |
1176 ms |
1664 KB |
Output is correct |
20 |
Correct |
970 ms |
1952 KB |
Output is correct |
21 |
Correct |
816 ms |
1608 KB |
Output is correct |
22 |
Correct |
1177 ms |
1488 KB |
Output is correct |
23 |
Correct |
1002 ms |
1520 KB |
Output is correct |
24 |
Correct |
518 ms |
1104 KB |
Output is correct |
25 |
Correct |
389 ms |
1320 KB |
Output is correct |
26 |
Correct |
618 ms |
23584 KB |
Output is correct |
27 |
Correct |
364 ms |
1504 KB |
Output is correct |
28 |
Correct |
674 ms |
17208 KB |
Output is correct |
29 |
Correct |
522 ms |
1376 KB |
Output is correct |
30 |
Correct |
468 ms |
1664 KB |
Output is correct |
31 |
Correct |
456 ms |
1776 KB |
Output is correct |
32 |
Correct |
788 ms |
35992 KB |
Output is correct |
33 |
Correct |
840 ms |
35808 KB |
Output is correct |
34 |
Correct |
1016 ms |
61296 KB |
Output is correct |
35 |
Correct |
976 ms |
53512 KB |
Output is correct |
36 |
Correct |
370 ms |
1760 KB |
Output is correct |
37 |
Correct |
4 ms |
968 KB |
Output is correct |
38 |
Correct |
616 ms |
1512 KB |
Output is correct |
39 |
Correct |
420 ms |
1784 KB |
Output is correct |
40 |
Correct |
632 ms |
1552 KB |
Output is correct |
41 |
Correct |
824 ms |
17432 KB |
Output is correct |
42 |
Correct |
634 ms |
1656 KB |
Output is correct |
43 |
Correct |
626 ms |
17736 KB |
Output is correct |
44 |
Correct |
604 ms |
1672 KB |
Output is correct |
45 |
Correct |
528 ms |
1672 KB |
Output is correct |
46 |
Correct |
840 ms |
43944 KB |
Output is correct |
47 |
Correct |
886 ms |
43696 KB |
Output is correct |
48 |
Correct |
1228 ms |
75096 KB |
Output is correct |
49 |
Correct |
1052 ms |
64216 KB |
Output is correct |
50 |
Correct |
528 ms |
1696 KB |
Output is correct |
51 |
Correct |
642 ms |
1768 KB |
Output is correct |
52 |
Correct |
696 ms |
1360 KB |
Output is correct |
53 |
Correct |
1036 ms |
41712 KB |
Output is correct |
54 |
Correct |
528 ms |
1640 KB |
Output is correct |
55 |
Correct |
1008 ms |
37288 KB |
Output is correct |
56 |
Correct |
812 ms |
1664 KB |
Output is correct |
57 |
Correct |
644 ms |
1872 KB |
Output is correct |
58 |
Correct |
582 ms |
1688 KB |
Output is correct |
59 |
Correct |
1074 ms |
49104 KB |
Output is correct |
60 |
Correct |
1232 ms |
49016 KB |
Output is correct |
61 |
Correct |
1674 ms |
85288 KB |
Output is correct |
62 |
Correct |
1236 ms |
78424 KB |
Output is correct |
63 |
Correct |
882 ms |
1792 KB |
Output is correct |
64 |
Correct |
1378 ms |
2096 KB |
Output is correct |
65 |
Correct |
1645 ms |
46784 KB |
Output is correct |
66 |
Correct |
1752 ms |
41112 KB |
Output is correct |
67 |
Correct |
1024 ms |
2016 KB |
Output is correct |
68 |
Correct |
1076 ms |
1824 KB |
Output is correct |
69 |
Correct |
2094 ms |
83376 KB |
Output is correct |
70 |
Correct |
1852 ms |
68064 KB |
Output is correct |
71 |
Correct |
1250 ms |
9024 KB |
Output is correct |
72 |
Correct |
1062 ms |
2384 KB |
Output is correct |