Submission #985421

#TimeUsernameProblemLanguageResultExecution timeMemory
985421kkkkkkkkCyberland (APIO23_cyberland)C++17
15 / 100
21 ms7288 KiB
#include <bits/stdc++.h>

using namespace std;

vector<pair<int,int> > G[100005];
double rez=0;
int N;
vector<int> arr1;

void dijkstra(int poc) {
    bool vis[N]={0};
    double dist[N];
    for (int i=0;i<N;i++)
        dist[i]=1e15;
    priority_queue<pair<double,int> > pq;
    pq.push({0,poc});
    dist[poc]=0;
    int t=-1;
    while (!pq.empty()) {
        int teme=pq.top().second;
        pq.pop();
        if (vis[teme]) continue;
        vis[teme]=1;
        if (arr1[teme]==0||teme==0) {
            t=teme;
            break;
        }
        for (auto x:G[teme]) {
            int next=x.first, dist_between=x.second;
            if (dist[next]>dist[teme]+dist_between) {
                dist[next]=dist[teme]+dist_between;
                pq.push({-dist[next], next});
            }
        }
    }
    if (t==-1) rez=-1;
    else rez=dist[t];
}

double solve(int n, int m, int k, int h, vector<int> a, vector<int> b, vector<int> c, vector<int> arr) {
    for (int i=0;i<n;i++)
        G[i].clear();
    N=n;
    arr1=arr;
    for (int i=0;i<m;i++) {
        G[a[i]].push_back({b[i],c[i]});
        G[b[i]].push_back({a[i],c[i]});
    }
    dijkstra(h);
    return rez;
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...