Submission #786357

#TimeUsernameProblemLanguageResultExecution timeMemory
786357jamkelTwo Transportations (JOI19_transportations)C++14
0 / 100
436 ms656 KiB
#include <bits/stdc++.h> #include "Azer.h" using namespace std; #define st first #define nd second typedef long long ll; int odl=0,nu=0; int k1=0,k2=0; int n; vector<int>w(2000,-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) { vector<vector<pair<int,int>>>g(N); n=N; w[0]=0; for(int i=0;i<A;i++) { g[U[i]].push_back({C[i],V[i]}); g[V[i]].push_back({C[i],U[i]}); } priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>>q; for(long unsigned int i=0;i<g[0].size();i++) { q.push({g[0][i].st,g[0][i].nd}); } q.push({1048575,0}); int ile=1; while(ile<N) { if(w[q.top().nd]>-1 && q.size()>1) { q.pop(); } else { 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)); } while(k2<11) { } w[nu]=odl; ile++; for(long unsigned int i=0;i<g[nu].size();i++) { q.push({g[nu][i].st+odl,g[nu][i].nd}); } k1=0;k2=0;odl=0;nu=0; } } } void ReceiveA(bool x) { if(k1<20) { if(x) { odl+=pow(2,k1); } k1++; } else { if(x) { nu+=pow(2,k2); } k2++; } }
#include <bits/stdc++.h> #include "Baijan.h" using namespace std; #define st first #define nd second typedef long long ll; int odl=0,nu=0; int k1=0,k2=0; void InitB(int N, int B, std::vector<int> S, std::vector<int> T, std::vector<int> D) { vector<vector<pair<int,int>>>g(N); vector<int>w(N,-1); for(int i=0;i<B;i++) { g[S[i]].push_back({D[i],T[i]}); g[T[i]].push_back({D[i],S[i]}); } priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>>q; for(long unsigned int i=0;i<g[0].size();i++) { q.push({g[0][i].st,g[0][i].nd}); } q.push({1048575,0}); int ile=1; while(ile<N) { if(w[q.top().nd]>-1 && q.size()>1) { q.pop(); } else { while(k2<11) { } if(odl>=q.top().st) { odl=q.top().st; nu=q.top().nd; } w[nu]=odl; ile++; for(long unsigned int i=0;i<g[nu].size();i++) { q.push({g[nu][i].st+odl,g[nu][i].nd}); } for(int i=0;i<20;i++) { SendB(odl&(1<<i)); } for(int i=0;i<11;i++) { SendB(nu&(1<<i)); } k1=0;k2=0;odl=0;nu=0; } } } void ReceiveB(bool x) { if(k1<20) { if(x) { odl+=pow(2,k1); } k1++; } else { if(x) { nu+=pow(2,k2); } k2++; } }
#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...