Submission #1325679

#TimeUsernameProblemLanguageResultExecution timeMemory
1325679adiyerTwo Transportations (JOI19_transportations)C++20
8 / 100
161 ms27676 KiB
#include "Azer.h"
#include <bits/stdc++.h>

using namespace std;

namespace {

    const int maxn = 2000;
    const int inf = 1123123123;

    int n;
    int d[maxn];

    bool fg;

    vector < pair < int, int > > g[maxn];

    vector < bool > rec;

    void dijkstra(int s){
        set < pair < int, int > > q;
        fill(d, d + maxn, inf);
        d[s] = 0, q.insert({d[s], s});
        while(!q.empty()){
            int v = (q.begin() -> second);
            q.erase(q.begin());
            for(auto [u, w] : g[v])
                if(d[v] + w < d[u])
                    q.erase({d[u], u}),
                    d[u] = d[v] + w,
                    q.insert({d[u], u});
        }
    }
}

void InitA(int N, int A, vector< int > U, vector< int > V, vector < int > C){
    n = N;
    for(int i = 0; i < A; i++){
        g[U[i]].push_back({V[i], C[i]});
        g[V[i]].push_back({U[i], C[i]});
    }
}

void ReceiveA(bool x){
    rec.push_back(x);
}

vector < int > Answer(){
    vector < int > ans(n);
    int j = 0, m = 0;
    for(int bit = 9; bit >= 0; bit--) m |= (rec[j++] << bit);
    for(int i = 0; i < m; i++){
        int u = 0, v = 0, c = 0;
        for(int bit = 10; bit >= 0; bit--) u |= (rec[j++] << bit);
        for(int bit = 10; bit >= 0; bit--) v |= (rec[j++] << bit);
        for(int bit = 8; bit >= 0; bit--) c |= (rec[j++] << bit);
        g[u].push_back({v, c});
        g[v].push_back({u, c});
    }
    dijkstra(0);
    for(int i = 0; i < n; i++) ans[i] = d[i];
    return ans;
}
#include "Baijan.h"
#include <bits/stdc++.h>

using namespace std;

namespace {

    const int maxn = 2000;
    const int inf = 1123123123;

    int n;
    int d[maxn];

    vector < pair < int, int > > g[maxn];

    void dijkstra(int s){
        set < pair < int, int > > q;
        fill(d, d + maxn, inf);
        d[s] = 0, q.insert({d[s], s});
        while(!q.empty()){
            int v = (q.begin() -> second);
            q.erase(q.begin());
            for(auto [u, w] : g[v])
                if(d[v] + w < d[u])
                    q.erase({d[u], u}),
                    d[u] = d[v] + w,
                    q.insert({d[u], u});
        }
    }
}

void InitB(int N, int B, std::vector<int> S, std::vector<int> T, std::vector<int> D) {
    n = N;
    for(int bit = 9; bit >= 0; bit--) SendB((B >> bit & 1));
    for(int i = 0; i < B; i++){
        for(int bit = 10; bit >= 0; bit--){
            SendB((S[i] >> bit & 1));
        }
        for(int bit = 10; bit >= 0; bit--){
            SendB((T[i] >> bit & 1));
        }
        for(int bit = 8; bit >= 0; bit--){
            SendB((D[i] >> bit & 1));
        }
    }
}

void ReceiveB(bool y) {
}
#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...