Submission #932089

#TimeUsernameProblemLanguageResultExecution timeMemory
932089Darren0724Cyberland (APIO23_cyberland)C++17
15 / 100
3043 ms8660 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 (vis[h]==0?-1: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...