#include "Azer.h"
#include <bits/stdc++.h>
using namespace std;
const int INF = 1e8;
namespace {
int N;
vector<vector<pair<int, int>>> g;
vector<int> dist;
vector<bool> vis;
queue<bool> received;
int numRecv;
int curDist = 0;
int numVisited = 0;
int nxt, nxtDist;
void sendInt(int x, int bits){
for(int i = 0; i < bits; i++){
bool b = x & (1<<i);
SendA(b);
}
}
void visit(int u){
numVisited++;
vis[u] = true;
curDist = dist[u];
for(auto [v, c] : g[u]){
dist[v] = min(dist[v], dist[u]+c);
}
if(numVisited == N) return;
nxt = -1, nxtDist = INF;
for(int i = 0; i < N; i++){
if(!vis[i] && dist[i] < nxtDist){
nxtDist = dist[i];
nxt = i;
}
}
int x = min(nxtDist-curDist, 501);
numRecv = 9;
sendInt(x, 9);
}
int receiveInt(int bits){
int ans = 0;
for(int i = 0; i < bits; i++){
bool b = received.front(); received.pop();
if(b) ans += (1<<i);
}
// cerr << "A " << ans << " " << bits << endl;
return ans;
}
void receive(){
if(numRecv == 9){
int x = receiveInt(9);
int otherDist = x+curDist;
if(otherDist < nxtDist){
nxtDist = otherDist;
numRecv = 11;
}
else{
sendInt(nxt, 11);
visit(nxt);
}
}
else if(numRecv == 11){
nxt = receiveInt(11);
dist[nxt] = nxtDist;
visit(nxt);
}
}
} // namespace
void InitA(int N, int A, std::vector<int> U, std::vector<int> V,
std::vector<int> C) {
::N = N;
g.resize(N);
for (int i = 0; i < A; ++i) {
g[U[i]].emplace_back(V[i], C[i]);
g[V[i]].emplace_back(U[i], C[i]);
}
dist.assign(N, INF);
dist[0] = 0;
vis.resize(N);
::visit(0);
}
void ReceiveA(bool x) {
received.push(x);
if((int)received.size() == numRecv){
::receive();
}
}
std::vector<int> Answer() {
return dist;
}
#include "Baijan.h"
#include <bits/stdc++.h>
using namespace std;
const int INF = 1e8;
namespace {
int N;
vector<vector<pair<int, int>>> g;
vector<int> dist;
vector<bool> vis;
queue<bool> received;
int numRecv;
int curDist = 0;
int numVisited = 0;
int nxt, nxtDist;
void sendInt(int x, int bits){
for(int i = 0; i < bits; i++){
bool b = x & (1<<i);
SendB(b);
}
}
void visit(int u){
numVisited++;
vis[u] = true;
curDist = dist[u];
for(auto [v, c] : g[u]){
dist[v] = min(dist[v], dist[u]+c);
}
if(numVisited == N) return;
nxt = -1, nxtDist = INF;
for(int i = 0; i < N; i++){
if(!vis[i] && dist[i] < nxtDist){
nxtDist = dist[i];
nxt = i;
}
}
int x = min(nxtDist-curDist, 501);
numRecv = 9;
sendInt(x, 9);
}
int receiveInt(int bits){
int ans = 0;
for(int i = 0; i < bits; i++){
bool b = received.front(); received.pop();
if(b) ans += (1<<i);
}
// cerr << "B " << ans << " " << bits << endl;
return ans;
}
void receive(){
if(numRecv == 9){
int x = receiveInt(9);
int otherDist = x+curDist;
if(otherDist <= nxtDist){
nxtDist = otherDist;
numRecv = 11;
}
else{
sendInt(nxt, 11);
visit(nxt);
}
}
else if(numRecv == 11){
nxt = receiveInt(11);
dist[nxt] = nxtDist;
visit(nxt);
}
}
} // namespace
void InitB(int N, int A, std::vector<int> U, std::vector<int> V,
std::vector<int> C) {
::N = N;
g.resize(N);
for (int i = 0; i < A; ++i) {
g[U[i]].emplace_back(V[i], C[i]);
g[V[i]].emplace_back(U[i], C[i]);
}
dist.assign(N, INF);
dist[0] = 0;
vis.resize(N);
vis[0] = true;
::visit(0);
}
void ReceiveB(bool x) {
received.push(x);
if((int)received.size() == numRecv){
::receive();
}
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
564 ms |
792 KB |
Output is correct |
2 |
Correct |
0 ms |
400 KB |
Output is correct |
3 |
Correct |
460 ms |
788 KB |
Output is correct |
4 |
Correct |
508 ms |
10112 KB |
Output is correct |
5 |
Correct |
27 ms |
656 KB |
Output is correct |
6 |
Correct |
548 ms |
2148 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
400 KB |
Output is correct |
2 |
Correct |
396 ms |
744 KB |
Output is correct |
3 |
Correct |
415 ms |
804 KB |
Output is correct |
4 |
Correct |
689 ms |
27400 KB |
Output is correct |
5 |
Correct |
715 ms |
24104 KB |
Output is correct |
6 |
Correct |
126 ms |
620 KB |
Output is correct |
7 |
Correct |
584 ms |
24224 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
533 ms |
724 KB |
Output is correct |
2 |
Correct |
0 ms |
420 KB |
Output is correct |
3 |
Correct |
506 ms |
660 KB |
Output is correct |
4 |
Correct |
520 ms |
864 KB |
Output is correct |
5 |
Correct |
559 ms |
656 KB |
Output is correct |
6 |
Correct |
402 ms |
740 KB |
Output is correct |
7 |
Correct |
562 ms |
740 KB |
Output is correct |
8 |
Correct |
491 ms |
676 KB |
Output is correct |
9 |
Correct |
448 ms |
656 KB |
Output is correct |
10 |
Correct |
482 ms |
788 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
225 ms |
656 KB |
Output is correct |
2 |
Correct |
236 ms |
632 KB |
Output is correct |
3 |
Correct |
283 ms |
13336 KB |
Output is correct |
4 |
Correct |
203 ms |
684 KB |
Output is correct |
5 |
Correct |
218 ms |
9904 KB |
Output is correct |
6 |
Correct |
252 ms |
656 KB |
Output is correct |
7 |
Correct |
227 ms |
656 KB |
Output is correct |
8 |
Correct |
239 ms |
700 KB |
Output is correct |
9 |
Correct |
320 ms |
17968 KB |
Output is correct |
10 |
Correct |
334 ms |
18136 KB |
Output is correct |
11 |
Correct |
459 ms |
35536 KB |
Output is correct |
12 |
Correct |
368 ms |
30680 KB |
Output is correct |
13 |
Correct |
183 ms |
656 KB |
Output is correct |
14 |
Correct |
0 ms |
400 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
225 ms |
656 KB |
Output is correct |
2 |
Correct |
236 ms |
632 KB |
Output is correct |
3 |
Correct |
283 ms |
13336 KB |
Output is correct |
4 |
Correct |
203 ms |
684 KB |
Output is correct |
5 |
Correct |
218 ms |
9904 KB |
Output is correct |
6 |
Correct |
252 ms |
656 KB |
Output is correct |
7 |
Correct |
227 ms |
656 KB |
Output is correct |
8 |
Correct |
239 ms |
700 KB |
Output is correct |
9 |
Correct |
320 ms |
17968 KB |
Output is correct |
10 |
Correct |
334 ms |
18136 KB |
Output is correct |
11 |
Correct |
459 ms |
35536 KB |
Output is correct |
12 |
Correct |
368 ms |
30680 KB |
Output is correct |
13 |
Correct |
183 ms |
656 KB |
Output is correct |
14 |
Correct |
0 ms |
400 KB |
Output is correct |
15 |
Correct |
321 ms |
656 KB |
Output is correct |
16 |
Correct |
319 ms |
576 KB |
Output is correct |
17 |
Correct |
276 ms |
528 KB |
Output is correct |
18 |
Correct |
343 ms |
10060 KB |
Output is correct |
19 |
Correct |
271 ms |
656 KB |
Output is correct |
20 |
Correct |
359 ms |
10220 KB |
Output is correct |
21 |
Correct |
286 ms |
656 KB |
Output is correct |
22 |
Correct |
243 ms |
712 KB |
Output is correct |
23 |
Correct |
415 ms |
22036 KB |
Output is correct |
24 |
Correct |
501 ms |
22080 KB |
Output is correct |
25 |
Correct |
583 ms |
43660 KB |
Output is correct |
26 |
Correct |
591 ms |
36236 KB |
Output is correct |
27 |
Correct |
289 ms |
732 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
225 ms |
656 KB |
Output is correct |
2 |
Correct |
236 ms |
632 KB |
Output is correct |
3 |
Correct |
283 ms |
13336 KB |
Output is correct |
4 |
Correct |
203 ms |
684 KB |
Output is correct |
5 |
Correct |
218 ms |
9904 KB |
Output is correct |
6 |
Correct |
252 ms |
656 KB |
Output is correct |
7 |
Correct |
227 ms |
656 KB |
Output is correct |
8 |
Correct |
239 ms |
700 KB |
Output is correct |
9 |
Correct |
320 ms |
17968 KB |
Output is correct |
10 |
Correct |
334 ms |
18136 KB |
Output is correct |
11 |
Correct |
459 ms |
35536 KB |
Output is correct |
12 |
Correct |
368 ms |
30680 KB |
Output is correct |
13 |
Correct |
183 ms |
656 KB |
Output is correct |
14 |
Correct |
0 ms |
400 KB |
Output is correct |
15 |
Correct |
321 ms |
656 KB |
Output is correct |
16 |
Correct |
319 ms |
576 KB |
Output is correct |
17 |
Correct |
276 ms |
528 KB |
Output is correct |
18 |
Correct |
343 ms |
10060 KB |
Output is correct |
19 |
Correct |
271 ms |
656 KB |
Output is correct |
20 |
Correct |
359 ms |
10220 KB |
Output is correct |
21 |
Correct |
286 ms |
656 KB |
Output is correct |
22 |
Correct |
243 ms |
712 KB |
Output is correct |
23 |
Correct |
415 ms |
22036 KB |
Output is correct |
24 |
Correct |
501 ms |
22080 KB |
Output is correct |
25 |
Correct |
583 ms |
43660 KB |
Output is correct |
26 |
Correct |
591 ms |
36236 KB |
Output is correct |
27 |
Correct |
289 ms |
732 KB |
Output is correct |
28 |
Correct |
330 ms |
692 KB |
Output is correct |
29 |
Correct |
430 ms |
676 KB |
Output is correct |
30 |
Correct |
592 ms |
23976 KB |
Output is correct |
31 |
Correct |
353 ms |
656 KB |
Output is correct |
32 |
Correct |
463 ms |
20992 KB |
Output is correct |
33 |
Correct |
383 ms |
716 KB |
Output is correct |
34 |
Correct |
352 ms |
744 KB |
Output is correct |
35 |
Correct |
326 ms |
752 KB |
Output is correct |
36 |
Correct |
604 ms |
24652 KB |
Output is correct |
37 |
Correct |
521 ms |
24684 KB |
Output is correct |
38 |
Correct |
679 ms |
48652 KB |
Output is correct |
39 |
Correct |
655 ms |
44032 KB |
Output is correct |
40 |
Correct |
391 ms |
784 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
564 ms |
792 KB |
Output is correct |
2 |
Correct |
0 ms |
400 KB |
Output is correct |
3 |
Correct |
460 ms |
788 KB |
Output is correct |
4 |
Correct |
508 ms |
10112 KB |
Output is correct |
5 |
Correct |
27 ms |
656 KB |
Output is correct |
6 |
Correct |
548 ms |
2148 KB |
Output is correct |
7 |
Correct |
0 ms |
400 KB |
Output is correct |
8 |
Correct |
396 ms |
744 KB |
Output is correct |
9 |
Correct |
415 ms |
804 KB |
Output is correct |
10 |
Correct |
689 ms |
27400 KB |
Output is correct |
11 |
Correct |
715 ms |
24104 KB |
Output is correct |
12 |
Correct |
126 ms |
620 KB |
Output is correct |
13 |
Correct |
584 ms |
24224 KB |
Output is correct |
14 |
Correct |
533 ms |
724 KB |
Output is correct |
15 |
Correct |
0 ms |
420 KB |
Output is correct |
16 |
Correct |
506 ms |
660 KB |
Output is correct |
17 |
Correct |
520 ms |
864 KB |
Output is correct |
18 |
Correct |
559 ms |
656 KB |
Output is correct |
19 |
Correct |
402 ms |
740 KB |
Output is correct |
20 |
Correct |
562 ms |
740 KB |
Output is correct |
21 |
Correct |
491 ms |
676 KB |
Output is correct |
22 |
Correct |
448 ms |
656 KB |
Output is correct |
23 |
Correct |
482 ms |
788 KB |
Output is correct |
24 |
Correct |
225 ms |
656 KB |
Output is correct |
25 |
Correct |
236 ms |
632 KB |
Output is correct |
26 |
Correct |
283 ms |
13336 KB |
Output is correct |
27 |
Correct |
203 ms |
684 KB |
Output is correct |
28 |
Correct |
218 ms |
9904 KB |
Output is correct |
29 |
Correct |
252 ms |
656 KB |
Output is correct |
30 |
Correct |
227 ms |
656 KB |
Output is correct |
31 |
Correct |
239 ms |
700 KB |
Output is correct |
32 |
Correct |
320 ms |
17968 KB |
Output is correct |
33 |
Correct |
334 ms |
18136 KB |
Output is correct |
34 |
Correct |
459 ms |
35536 KB |
Output is correct |
35 |
Correct |
368 ms |
30680 KB |
Output is correct |
36 |
Correct |
183 ms |
656 KB |
Output is correct |
37 |
Correct |
0 ms |
400 KB |
Output is correct |
38 |
Correct |
321 ms |
656 KB |
Output is correct |
39 |
Correct |
319 ms |
576 KB |
Output is correct |
40 |
Correct |
276 ms |
528 KB |
Output is correct |
41 |
Correct |
343 ms |
10060 KB |
Output is correct |
42 |
Correct |
271 ms |
656 KB |
Output is correct |
43 |
Correct |
359 ms |
10220 KB |
Output is correct |
44 |
Correct |
286 ms |
656 KB |
Output is correct |
45 |
Correct |
243 ms |
712 KB |
Output is correct |
46 |
Correct |
415 ms |
22036 KB |
Output is correct |
47 |
Correct |
501 ms |
22080 KB |
Output is correct |
48 |
Correct |
583 ms |
43660 KB |
Output is correct |
49 |
Correct |
591 ms |
36236 KB |
Output is correct |
50 |
Correct |
289 ms |
732 KB |
Output is correct |
51 |
Correct |
330 ms |
692 KB |
Output is correct |
52 |
Correct |
430 ms |
676 KB |
Output is correct |
53 |
Correct |
592 ms |
23976 KB |
Output is correct |
54 |
Correct |
353 ms |
656 KB |
Output is correct |
55 |
Correct |
463 ms |
20992 KB |
Output is correct |
56 |
Correct |
383 ms |
716 KB |
Output is correct |
57 |
Correct |
352 ms |
744 KB |
Output is correct |
58 |
Correct |
326 ms |
752 KB |
Output is correct |
59 |
Correct |
604 ms |
24652 KB |
Output is correct |
60 |
Correct |
521 ms |
24684 KB |
Output is correct |
61 |
Correct |
679 ms |
48652 KB |
Output is correct |
62 |
Correct |
655 ms |
44032 KB |
Output is correct |
63 |
Correct |
391 ms |
784 KB |
Output is correct |
64 |
Correct |
538 ms |
956 KB |
Output is correct |
65 |
Correct |
719 ms |
26620 KB |
Output is correct |
66 |
Correct |
758 ms |
23324 KB |
Output is correct |
67 |
Correct |
602 ms |
940 KB |
Output is correct |
68 |
Correct |
696 ms |
928 KB |
Output is correct |
69 |
Correct |
895 ms |
47648 KB |
Output is correct |
70 |
Correct |
653 ms |
39512 KB |
Output is correct |
71 |
Correct |
590 ms |
4932 KB |
Output is correct |
72 |
Correct |
507 ms |
1184 KB |
Output is correct |