#include "cyberland.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
const double inf = 2e14;
const int maxn=1e5+5;
vector<pair<int,double>>E[maxn];
vector<double>Dijkstra(int n,vector<int>s, vector<double>ds){
priority_queue<pair<double,int>>p;
vector<bool>vis(n,0);
for(auto i : s){
p.push({-ds[i], i});
}
while(!p.empty()){
int x = p.top().second;
p.pop();
if(vis[x]) continue;
vis[x] = 1;
for(auto i : E[x]){
int to = i.first;
double w = i.second;
if(ds[to] > ds[x] + w){
ds[to] = ds[x] + w;
p.push({-ds[to], to});
}
}
}
return ds;
}
double solve(int N, int M, int K, int H, vector<int> x, vector<int> y, vector<int> c, vector<int> arr) {
vector<int>twos;
for(int i = 0;i < N;i++){
E[i].clear();
if(arr[i] == 2) twos.push_back(i);
}
for(int i = 0;i < M;i++){
E[x[i]].push_back({y[i],c[i]});
E[y[i]].push_back({x[i],c[i]});
}
vector<int>now;
now.push_back(0);
vector<double>dis(N,inf);
dis[0] = 0;
for(int i = 1;i < N;i++){
if(arr[i] == 0){
now.push_back(i);
dis[i] = 0;
}
}
double ans = inf;
// for(int i = 1;i <= K;i++){
// dis = Dijkstra(N, now, dis);
// ans = min(ans, dis[H]);
// if(arr[H] == 2) ans = min(ans, dis[H] / 2);
// vector<double>ndis(N,inf);
// for(auto t : twos){
// double nw = dis[t] / 2;
// for(auto j : E[t]){
// int to = j.first;
// double w = j.second;
// ndis[to] = min(ndis[to],nw + w);
// }
// }
// vector<int>ns;
// for(int j = 0;j < N;j++){
// if(ndis[j] < inf-2){
// ns.push_back(j);
// }
// }
// now = ns;
// dis = ndis;
// }
dis = Dijkstra(N, now, dis);
ans = min(ans, dis[H]);
if(ans >= inf-2) ans = -1;
return ans;
}
# | 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... |