Submission #1202556

#TimeUsernameProblemLanguageResultExecution timeMemory
1202556Francisco_MartinCyberland (APIO23_cyberland)C++20
0 / 100
892 ms2162688 KiB
#include "cyberland.h" #include <bits/stdc++.h> using namespace std; #define debug(x) cerr<<#x" = "<<x<<"\n"; #define debugv(x) cerr<<#x" = [ "; for(auto v:x) cerr << v << ", "; cerr<<"]\n"; using ll=long long; using ld=long double; const ld INF=1e18; double solve(int N,int M,int K,int H,vector<int> x,vector<int> y,vector<int> c,vector<int> arr){ vector<vector<ld>> A(K+1,vector<ld>(N,INF)); vector<pair<ld,ld>> g[N]; queue<ll> q; vector<bool> vis(N,false); priority_queue<array<ld,3>> pq; ld ans=INF; for(int i=0; i<M; i++){ g[x[i]].push_back({y[i],c[i]}); g[y[i]].push_back({x[i],c[i]}); } q.push(0); while(!q.empty()){ ll v=q.front(); q.pop(); vis[v]=true; for(auto [u,w]:g[v]){ if(vis[u]) continue; q.push(u); } } if(!vis[H]) return -1; for(int i=0; i<N; i++) if(i==0 || (arr[i]==0 && vis[i])) pq.push({0,K,i}); while(!pq.empty()){ auto [w,k,v]=pq.top(); pq.pop(); if(A[k][v]!=INF || v==H) continue; for(auto [u,w2]:g[(ll)v]){ if(A[k][u]>-w+w2){ A[k][u]=-w+w2; pq.push({w-w2,k,u}); } if(k>0 && arr[u]==2 && A[k-1][u]>(-w+w2)/2){ A[k-1][u]=(-w+w2)/2; pq.push({(w-w2)/2,k-1,u}); } } } for(int i=0; i<=K; i++) ans=min(ans,A[i][H]); return ans; }

Compilation message (stderr)

cyberland.cpp: In function 'double solve(int, int, int, int, std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
cyberland.cpp:28:73: warning: narrowing conversion of 'K' from 'int' to 'long double' [-Wnarrowing]
   28 |     for(int i=0; i<N; i++) if(i==0 || (arr[i]==0 && vis[i])) pq.push({0,K,i});
      |                                                                         ^
cyberland.cpp:28:75: warning: narrowing conversion of 'i' from 'int' to 'long double' [-Wnarrowing]
   28 |     for(int i=0; i<N; i++) if(i==0 || (arr[i]==0 && vis[i])) pq.push({0,K,i});
      |                                                                           ^
#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...