제출 #932123

#제출 시각아이디문제언어결과실행 시간메모리
932123Darren0724사이버랜드 (APIO23_cyberland)C++17
0 / 100
3049 ms9304 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,long 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<long double,int>> pq; dis[0]=0; vis[0]=1; long double ans=INF; 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(a>=dis[b]+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}); } } } if(vis[h]==1){ ans=min(ans,dis[h]); } } return (vis[h]==0?-1:ans); }
#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...