#include "Azer.h"
#include <iostream>
#include <vector>
using namespace std;
namespace {
struct edge{
int v,cost;
};
const int INF=1e9,cnt_v=10,cnt_cost=19;
int N,tmp_v,cnt_query,cnt_receive,v_receive,cost_receive;
bool flag;
vector<int> Dist;
vector<bool> Used;
vector<vector<edge>> Edge;
void my_sendA(int cnt,int x){
for (int i=0; i<cnt; i++)
SendA(x&(1<<i));
}
int get_closest(){
int v=-1;
for (int i=0; i<N; i++){
if (Used[i])
continue;
if (v==-1&&Dist[i]!=INF||Dist[v]>Dist[i])
v=i;
}
return v;
}
void update_edge(int v){
for (edge i:Edge[v])
Dist[i.v]=min(Dist[i.v],Dist[v]+i.cost);
}
void send_closest(int v){
my_sendA(cnt_v,v);
if (v!=-1)
my_sendA(cnt_cost,Dist[v]);
else
my_sendA(cnt_cost,0);
}
}
void ReceiveA(bool x){
if (!flag){
v_receive+=x*(1<<cnt_receive);
cnt_receive++;
}
else{
cost_receive+=x*(1<<cnt_receive);
cnt_receive++;
}
if (!flag&&cnt_receive==cnt_v){
flag=true;
cnt_receive=0;
}
if (flag&&cnt_receive==cnt_cost){
flag=false;
Dist[v_receive]=min(Dist[v_receive],cost_receive);
Used[v_receive]=true;
update_edge(v_receive);
cnt_query++;
tmp_v=get_closest();
if (cnt_query<N-1)
send_closest(tmp_v);
v_receive=cost_receive=cnt_receive=0;
}
}
void InitA(int n,int a,vector<int> u,vector<int> v,vector<int> c){
N=n;
cnt_query=cnt_receive=v_receive=cost_receive=0;
flag=false;
Dist.resize(N);
Used.resize(N);
Edge.resize(N);
for (int i=0; i<a; i++){
Edge[u[i]].push_back({v[i],c[i]});
Edge[v[i]].push_back({u[i],c[i]});
}
for (int i=0; i<N; i++){
Dist[i]=INF;
Used[i]=false;
}
Dist[0]=0;
Used[0]=true;
update_edge(0);
tmp_v=get_closest();
if (N>1)
send_closest(tmp_v);
}
vector<int> Answer(){
return Dist;
}
#include "Baijan.h"
#include <iostream>
#include <vector>
using namespace std;
namespace {
struct edge{
int v,cost;
};
const int INF=1e9,cnt_v=10,cnt_cost=19;
int N,tmp_v,cnt_receive,v_receive,cost_receive;
bool flag;
vector<int> Dist;
vector<bool> Used;
vector<vector<edge>> Edge;
void my_sendB(int cnt,int x){
for (int i=0; i<cnt; i++)
SendB(x&(1<<i));
}
int get_closest(){
int v=-1;
for (int i=0; i<N; i++){
if (Used[i])
continue;
if (v==-1&&Dist[i]!=INF||Dist[v]>Dist[i])
v=i;
}
return v;
}
void update_edge(int v){
for (edge i:Edge[v])
Dist[i.v]=min(Dist[i.v],Dist[v]+i.cost);
}
void send_closest(int v){
my_sendB(cnt_v,v);
my_sendB(cnt_cost,Dist[v]);
}
}
void ReceiveB(bool y){
if (!flag){
v_receive+=y*(1<<cnt_receive);
cnt_receive++;
}
else{
cost_receive+=y*(1<<cnt_receive);
cnt_receive++;
}
if (!flag&&cnt_receive==cnt_v){
if (v_receive==(1<<cnt_v)-1)
v_receive=-1;
flag=true;
cnt_receive=0;
}
if (flag&&cnt_receive==cnt_cost){
flag=false;
if (tmp_v==-1||v_receive!=-1&&Dist[tmp_v]>cost_receive){
tmp_v=v_receive;
Dist[tmp_v]=cost_receive;
}
Used[tmp_v]=true;
update_edge(tmp_v);
send_closest(tmp_v);
tmp_v=get_closest();
v_receive=cost_receive=cnt_receive=0;
}
}
void InitB(int n,int b,vector<int> s,vector<int> t,vector<int> d){
N=n;
cnt_receive=v_receive=cost_receive=0;
flag=false;
Dist.resize(N);
Used.resize(N);
Edge.resize(N);
for (int i=0; i<b; i++){
Edge[s[i]].push_back({t[i],d[i]});
Edge[t[i]].push_back({s[i],d[i]});
}
for (int i=0; i<N; i++){
Dist[i]=INF;
Used[i]=false;
}
Dist[0]=0;
Used[0]=true;
update_edge(0);
tmp_v=get_closest();
}
Compilation message
Azer.cpp: In function 'int {anonymous}::get_closest()':
Azer.cpp:24:22: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
24 | if (v==-1&&Dist[i]!=INF||Dist[v]>Dist[i])
| ~~~~~^~~~~~~~~~~~~~
Baijan.cpp: In function 'int {anonymous}::get_closest()':
Baijan.cpp:24:22: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
24 | if (v==-1&&Dist[i]!=INF||Dist[v]>Dist[i])
| ~~~~~^~~~~~~~~~~~~~
Baijan.cpp: In function 'void ReceiveB(bool)':
Baijan.cpp:55:37: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
55 | if (tmp_v==-1||v_receive!=-1&&Dist[tmp_v]>cost_receive){
| ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
325 ms |
328 KB |
Wrong Answer [2] |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
384 KB |
Output is correct |
2 |
Runtime error |
247 ms |
320 KB |
Execution killed with signal 13 |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
290 ms |
320 KB |
Wrong Answer [2] |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
524 ms |
644 KB |
Output is correct |
2 |
Correct |
453 ms |
608 KB |
Output is correct |
3 |
Correct |
528 ms |
13272 KB |
Output is correct |
4 |
Correct |
539 ms |
672 KB |
Output is correct |
5 |
Correct |
590 ms |
9928 KB |
Output is correct |
6 |
Correct |
590 ms |
652 KB |
Output is correct |
7 |
Correct |
326 ms |
680 KB |
Output is correct |
8 |
Correct |
470 ms |
684 KB |
Output is correct |
9 |
Correct |
711 ms |
18184 KB |
Output is correct |
10 |
Correct |
687 ms |
18088 KB |
Output is correct |
11 |
Correct |
794 ms |
35364 KB |
Output is correct |
12 |
Correct |
709 ms |
30656 KB |
Output is correct |
13 |
Correct |
540 ms |
640 KB |
Output is correct |
14 |
Correct |
0 ms |
384 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
524 ms |
644 KB |
Output is correct |
2 |
Correct |
453 ms |
608 KB |
Output is correct |
3 |
Correct |
528 ms |
13272 KB |
Output is correct |
4 |
Correct |
539 ms |
672 KB |
Output is correct |
5 |
Correct |
590 ms |
9928 KB |
Output is correct |
6 |
Correct |
590 ms |
652 KB |
Output is correct |
7 |
Correct |
326 ms |
680 KB |
Output is correct |
8 |
Correct |
470 ms |
684 KB |
Output is correct |
9 |
Correct |
711 ms |
18184 KB |
Output is correct |
10 |
Correct |
687 ms |
18088 KB |
Output is correct |
11 |
Correct |
794 ms |
35364 KB |
Output is correct |
12 |
Correct |
709 ms |
30656 KB |
Output is correct |
13 |
Correct |
540 ms |
640 KB |
Output is correct |
14 |
Correct |
0 ms |
384 KB |
Output is correct |
15 |
Incorrect |
200 ms |
320 KB |
Wrong Answer [2] |
16 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
524 ms |
644 KB |
Output is correct |
2 |
Correct |
453 ms |
608 KB |
Output is correct |
3 |
Correct |
528 ms |
13272 KB |
Output is correct |
4 |
Correct |
539 ms |
672 KB |
Output is correct |
5 |
Correct |
590 ms |
9928 KB |
Output is correct |
6 |
Correct |
590 ms |
652 KB |
Output is correct |
7 |
Correct |
326 ms |
680 KB |
Output is correct |
8 |
Correct |
470 ms |
684 KB |
Output is correct |
9 |
Correct |
711 ms |
18184 KB |
Output is correct |
10 |
Correct |
687 ms |
18088 KB |
Output is correct |
11 |
Correct |
794 ms |
35364 KB |
Output is correct |
12 |
Correct |
709 ms |
30656 KB |
Output is correct |
13 |
Correct |
540 ms |
640 KB |
Output is correct |
14 |
Correct |
0 ms |
384 KB |
Output is correct |
15 |
Incorrect |
200 ms |
320 KB |
Wrong Answer [2] |
16 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
325 ms |
328 KB |
Wrong Answer [2] |
2 |
Halted |
0 ms |
0 KB |
- |