Submission #1244835

#TimeUsernameProblemLanguageResultExecution timeMemory
1244835TobTwo Transportations (JOI19_transportations)C++20
0 / 100
2 ms1116 KiB
#include "Azer.h" #include <bits/stdc++.h> #define F first #define S second #define all(x) x.begin(), x.end() #define pb push_back #define FIO ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0) using namespace std; typedef long long ll; typedef pair <int, int> pii; static const int N = 2007, mxc = (1 << 9)-1, inf = 1e9; static int n, m, ldis, str, x, y, w; static set <pii> s; static vector <pii> adj[N]; static vector <int> d; static queue <int> bits; void InitA(int nn, int aa, vector<int> uu, vector<int> vv, vector<int> cc) { n = nn; m = aa; for (int i = 0; i < m; i++) { adj[uu[i]].pb({vv[i], cc[i]}); adj[vv[i]].pb({uu[i], cc[i]}); } str = -1; d.resize(n, inf); d[0] = 0; for (auto it : adj[0]) d[it.F] = it.S; for (int i = 1; i < n; i++) s.insert({d[i], i}); } void ReceiveA(bool x) { if (str != -1) bits.push(x); else str = 0; auto snum = [&](int x, int si) { for (int i = 0; i < si; i++) SendA((x>>i)&1); }; auto rnum = [&](int si) { int x = 0; for (int i = 0; i < si; i++) { x |= (int)bits.front() << i; bits.pop(); } return x; }; if (str == 1 && bits.size() < 9) return; if (str == 2 && bits.size() < 11) return; if (!str) { y = n, w = mxc; for (auto it : s) { if (it.F-ldis < w) { w = it.F-ldis; y = it.S; } } snum(w, 9); str = 1; return; } else if (str == 1) { int x = rnum(9); if (x > w) snum(y, 11); else { str = 2; return; } } else { y = rnum(11), w = x; } str = 0; s.erase({d[y], y}); d[y] = (ldis += w); for (auto it : adj[y]) { if (d[y] + it.S < d[it.F]) { s.erase({d[it.F], it.F}); d[it.F] = d[y]+it.S; s.insert({d[it.F], it.F}); } } } vector<int> Answer() { return d; }
#include "Baijan.h" #include <bits/stdc++.h> #define F first #define S second #define all(x) x.begin(), x.end() #define pb push_back #define FIO ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0) using namespace std; typedef long long ll; typedef pair <int, int> pii; static const int N = 2007, mxc = (1 << 9)-1, inf = 1e9; static int n, m, ldis, str, x, y, w; static set <pii> s; static vector <pii> adj[N]; static vector <int> d; static queue <int> bits; void InitB(int nn, int bb, vector<int> ss, vector<int> tt, vector<int> dd) { n = nn; m = bb; for (int i = 0; i < m; i++) { adj[ss[i]].pb({tt[i], dd[i]}); adj[tt[i]].pb({ss[i], dd[i]}); } d.resize(n, inf); d[0] = 0; for (auto it : adj[0]) d[it.F] = it.S; for (int i = 1; i < n; i++) s.insert({d[i], i}); SendB(1); } void ReceiveB(bool x) { bits.push(x); auto snum = [&](int x, int si) { for (int i = 0; i < si; i++) SendB((x>>i)&1); }; auto rnum = [&](int si) { int x = 0; for (int i = 0; i < si; i++) { x |= (int)bits.front() << i; bits.pop(); } return x; }; if (!str && bits.size() < 9) return; if (str && bits.size() < 11) return; if (!str) { y = n, w = mxc; for (auto it : s) { if (it.F-ldis < w) { w = it.F-ldis; y = it.S; } } x = rnum(9); if (x >= w) { snum(w, 9); snum(y, 11); } else { snum(w, 9); str = 1; return; } } else { y = rnum(11); w = x; } str = 0; s.erase({d[y], y}); d[y] = (ldis += w); for (auto it : adj[y]) { if (d[y] + it.S < d[it.F]) { s.erase({d[it.F], it.F}); d[it.F] = d[y]+it.S; s.insert({d[it.F], it.F}); } } }
#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...