Submission #977323

#TimeUsernameProblemLanguageResultExecution timeMemory
977323NexusCyberland (APIO23_cyberland)C++17
15 / 100
26 ms8076 KiB
#define ll long long
#include <bits/stdc++.h>
#include "cyberland.h"

using namespace std;

const ll N=1e5+9;

ll vis[N],g;
pair<ll,ll>p;
vector<pair<ll,ll>>v[N];
priority_queue<pair<ll,ll>>q;

double solve(int n, int M, int K, int H, vector<int> x, vector<int> y, vector<int> c, vector<int> arr) {

    vector<ll>dis(n,1e18);
    double ans=-1;
    for(ll i=0;i<n;++i)
    {
        if(!arr[i])dis[i]=0;
        vis[i]=0,v[i].clear();
    }

    for(ll i=0;i<M;++i)
    {
        v[x[i]].push_back({c[i],y[i]});
        v[y[i]].push_back({c[i],x[i]});
    }

    dis[0]=0;

    q.push({0,0});

    while(q.size())
    {
        p=q.top();
        g=p.second;
        q.pop();

        if(vis[g])continue;
        vis[g]=1;
        if(!arr[g])dis[g]=0;

        for(auto i:v[g])
        {
            if(dis[g]+i.first<dis[i.second])
            {
                dis[i.second]=dis[g]+i.first;
                q.push({-dis[i.second],i.second});
            }
        }
    }

    if(dis[H]<1e18)ans=dis[H];

    return ans;
}
#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...