Submission #1365527

#TimeUsernameProblemLanguageResultExecution timeMemory
1365527settopCyberland (APIO23_cyberland)C++20
0 / 100
13 ms6708 KiB
#include "cyberland.h"
#include<bits/stdc++.h>
using namespace std;

#define ll long long
#define fall(i,a,b) for(int i=a;i<=b;i++)
#define rfall(i,a,b) for(int i=a;i>=b;i--)
#define pb push_back
#define all(x) x.begin(),x.end()
#define sz(X) (int)x.size()
const int MAXN=1e5+10;
const ll inf=1e17;
typedef tuple<int,int,int> trio;
typedef pair<int,ll> pii;
typedef pair<long double,int> pd;

int n;
ll dp[MAXN];
vector<pii> g[MAXN];
bool vis[MAXN];

double solve(int N, int M, int K, int H, std::vector<int> x, std::vector<int> y, std::vector<int> c, std::vector<int> arr) {
    fall(i,0,N-1) g[i].clear();
    fall(i,0,M-1) g[x[i]].pb({y[i],c[i]}),g[y[i]].pb({x[i],c[i]});
    priority_queue<pii,vector<pii>,greater<pii>> pq; pq.push({0,0});
    fall(i,1,N-1) dp[i]=inf;
    while(!pq.empty()){
        auto [d,x]=pq.top(); pq.pop();
        if(d!=dp[x]) continue;
        for(auto [u,w]:g[x]) if(dp[u]>dp[x]+w){dp[u]=dp[x]+w;pq.push({dp[u],u});}
    }
    double ans=dp[H];
    if(dp[H]==inf) ans=-1;
    return ans;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...