제출 #985766

#제출 시각아이디문제언어결과실행 시간메모리
985766SzymonKrzywdaTwo Transportations (JOI19_transportations)C++17
0 / 100
12 ms24232 KiB
#include <bits/stdc++.h> #include "Azer.h" using namespace std; const int BITS = 20; int liczba_w; int akt = 0; int akt_2 = 0; string akt_str = ""; vector<int> answer={}; int info[3]; vector<vector<pair<int,int>>> graf(500000); void dijkstra(){ int val,v; priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>>pq; pq.push({0,0}); while (!pq.empty()){ val = pq.top().first; v = pq.top().second; pq.pop(); if (val >= answer[v]) continue; answer[v] = val; for (auto [b,val_2] : graf[v]){ pq.push({val+val_2,b}); } } } string decToBinary(int n) { string ans = ""; for (int i = BITS; i >= 0; i--) { int k = n >> i; if (k & 1) ans += "1"; else ans += "0"; } return ans; } int binaryToDecimal(string str) { int dec_num = 0; int power = 0 ; int n = str.length() ; for(int i = n-1 ; i>=0 ; i--){ if(str[i] == '1'){ dec_num += (1<<power) ; } power++ ; } return dec_num; } void ReceiveA(bool x){ if (x == 0) akt_str += "0"; else akt_str += "1"; if (akt_2==BITS){ int liczba = binaryToDecimal(akt_str); if (akt==0){ // wierzcholek 1 info[0] = liczba; } else if (akt==1){// wierzcholek 2 info[1] = liczba; } else{ // waga graf[info[0]].push_back({info[1],liczba}); } akt_2 = 0; akt = (akt+1)%3; } else akt_2 += 1; } void SendA(bool y); void send(int a){ string bin = decToBinary(a); for (int i=0; i<BITS+1; i++){ SendA(bin[i]); } } void InitA(int N, int A, vector<int> U, vector<int> V, vector<int> C){ for (int i=0; i<N; i++){ answer.push_back(9999999); } for (int i=0; i<A; i++){ graf[U[i]].push_back({V[i],C[i]}); } } vector<int> Answer(){ dijkstra(); return answer; }
#include <bits/stdc++.h> #include "Baijan.h" using namespace std; namespace{ const int BITS = 20; string decToBinary(int n) { string ans = ""; for (int i = BITS; i >= 0; i--) { int k = n >> i; if (k & 1) ans += "1"; else ans += "0"; } return ans; } void send(int a){ string bin = decToBinary(a); for (int i=0; i<BITS+1; i++){ SendB(bin[i]); } } } void ReceiveB(bool y){ } void SendB(bool x); void InitB(int N, int B, std::vector<int> S, std::vector<int> T, std::vector<int> D){ for (int i=0; i<B; i++){ send(S[i]); send(T[i]); send(D[i]); } }
#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...