Submission #932085

#TimeUsernameProblemLanguageResultExecution timeMemory
932085Darren0724Cyberland (APIO23_cyberland)C++17
0 / 100
3082 ms7240 KiB
#include "cyberland.h" #include <bits/stdc++.h> //#include "stub.cpp" using namespace std; const long long INF=1e15; const double eps=1e-10; double solve(int n, int m, int k, int h, vector<int> x, vector<int> y, vector<int> v, vector<int> c1) { 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(c1[j]==0)dis[j]=0; if(c1[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+eps)continue; for(auto [c,d]:adj[b]){ double cost=(c1[c]==0?0: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...