Submission #788151

#TimeUsernameProblemLanguageResultExecution timeMemory
788151jamkelTwo Transportations (JOI19_transportations)C++14
38 / 100
888 ms46588 KiB
#include <bits/stdc++.h> #include "Azer.h" using namespace std; #define st first #define nd second int odl=0,numer=0; int k1=0,k2=0; int n; vector<int>w(2000,-1); priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>>q; vector<vector<pair<int,int>>>graf; int ile=1; vector<int>Answer() { vector<int>v(n); for(int i=0;i<n;i++) { v[i]=w[i]; } return v; } void InitA(int N, int A, std::vector<int> U, std::vector<int> V, std::vector<int> C) { n=N; w[0]=0; for(int i=0;i<n;i++) { graf.push_back({{}}); } for(int i=0;i<A;i++) { graf[U[i]].push_back({C[i],V[i]}); graf[V[i]].push_back({C[i],U[i]}); } for(long unsigned int i=1;i<graf[0].size();i++) { q.push({graf[0][i].st,graf[0][i].nd}); } q.push({1048575,0}); if(ile<n) { for(int i=0;i<20;i++) { SendA(q.top().st&(1<<i)); } for(int i=0;i<11;i++) { SendA(q.top().nd&(1<<i)); } } } void ReceiveA(bool x) { if(k1<20) { if(x) { odl+=pow(2,k1); } k1++; } else { if(x) { numer+=pow(2,k2); } k2++; } if(k2==11) { //cout<<numer<<" "<<odl<<endl; w[numer]=odl; ile++; for(long unsigned int i=0;i<graf[numer].size();i++) { q.push({graf[numer][i].st+odl,graf[numer][i].nd}); } while(w[q.top().nd]>-1 && q.size()>1) { q.pop(); } if(ile<n) { for(int i=0;i<20;i++) { SendA(q.top().st&(1<<i)); } for(int i=0;i<11;i++) { SendA(q.top().nd&(1<<i)); } } k1=0;k2=0;odl=0;numer=0; } }
#include <bits/stdc++.h> #include "Baijan.h" using namespace std; #define st first #define nd second int odl_b=0,numer_b=0; int k1_b=0,k2_b=0; int n_b; vector<int>w_b(2000,-1); priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>>q_b; vector<vector<pair<int,int>>>graf_b; void InitB(int N, int B, std::vector<int> S, std::vector<int> T, std::vector<int> D) { w_b[0]=0; n_b=N; for(int i=0;i<n_b;i++) { graf_b.push_back({{}}); } for(int i=0;i<B;i++) { graf_b[S[i]].push_back({D[i],T[i]}); graf_b[T[i]].push_back({D[i],S[i]}); } for(long unsigned int i=0;i<graf_b[0].size();i++) { q_b.push({graf_b[0][i].st,graf_b[0][i].nd}); } q_b.push({1048575,0}); } void ReceiveB(bool x) { if(k1_b<20) { if(x) { odl_b+=pow(2,k1_b); } k1_b++; } else { if(x) { numer_b+=pow(2,k2_b); } k2_b++; } if(k2_b==11) { while(w_b[q_b.top().nd]>-1 && q_b.size()>1) { q_b.pop(); } if(odl_b>=q_b.top().st) { odl_b=q_b.top().st; numer_b=q_b.top().nd; } w_b[numer_b]=odl_b; for(long unsigned int i=0;i<graf_b[numer_b].size();i++) { q_b.push({graf_b[numer_b][i].st+odl_b,graf_b[numer_b][i].nd}); } for(int i=0;i<20;i++) { SendB(odl_b&(1<<i)); } for(int i=0;i<11;i++) { SendB(numer_b&(1<<i)); } k1_b=0;k2_b=0;odl_b=0;numer_b=0; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...