Submission #932083

#TimeUsernameProblemLanguageResultExecution timeMemory
932083Darren0724Cyberland (APIO23_cyberland)C++17
8 / 100
3083 ms8664 KiB
#include "cyberland.h" #include <bits/stdc++.h> //#include "stub.cpp" using namespace std; const long long INF=1e15; const double eps=1e-9; double solve(int n, int m, int k, int h, vector<int> x, vector<int> y, vector<int> v, vector<int> c) { vector<pair<int,double>> adj[n+1]; for(int i=0;i<m;i++){ adj[x[i]].push_back({y[i],v[i]}); adj[y[i]].push_back({x[i],v[i]}); } vector dis(n,(long double)INF); vector vis(n,(int)0); priority_queue<pair<double,int>> pq; dis[0]=0; vis[0]=1; for(int i=0;i<k;i++){ for(int j=0;j<n;j++){ if(vis[j]){ if(c[j]==0)dis[j]=0; if(c[j]==2)dis[j]/=2; pq.push({-dis[j],j}); } } while(pq.size()){ auto [a,b]=pq.top(); pq.pop(); a=-a; if(dis[b]!=a)continue; for(auto [c,d]:adj[b]){ double cost=a+d; if(cost<dis[c]){ dis[c]=cost; vis[c]=1; pq.push({-dis[c],c}); } } } } return dis[h]; }
#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...