#include <bits/stdc++.h>
#define ll long long
#define sz(x) int(x.size())
#define all(x) x.begin(),x.end()
#define fr first
#define se second
#define pb push_back
#define mp make_pair
using namespace std;
const int MAXN=1e5+1;
vector<pair<ll,ll>>grafo[MAXN];
ll n, h, m, k;
ll dijkstra()
{
priority_queue<pair<ll,ll>>pq;
vector<ll>proc(n,0);
vector<ll>dist(n,LLONG_MAX);
dist[0]=0;
pq.push({0,0});
while(pq.size())
{
ll nod=pq.top().se;
pq.pop();
if(proc[nod])
continue;
proc[nod]=1;
for(auto k:grafo[nod])
{
if(dist[nod]+k.se<dist[k.fr])
{
dist[k.fr]=dist[nod]+k.se;
pq.push({-dist[k.fr],k.fr});
}
}
}
return dist[h];
}
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) {
ll i;
n=N;
m=M;
k=K;
h=H;
for(i=0; i<n; i++)
grafo[i].resize(0);
for(i=0; i<M; i++)
{
grafo[x[i]].pb({y[i],c[i]});
grafo[y[i]].pb({x[i],c[i]});
}
ll res=dijkstra();
if(res==LLONG_MAX)
return double(-1);
return double(res);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |