Submission #926659

#TimeUsernameProblemLanguageResultExecution timeMemory
926659Wansur사이버랜드 (APIO23_cyberland)C++17
0 / 100
463 ms59632 KiB
#include <bits/stdc++.h> #define f first #define s second #define ent '\n' using namespace std; typedef long long ll; const int mx=1e5+12; vector<pair<int,int>> g[mx]; double d[mx][101]; bool used[mx]; void dfs(int v){ used[v]=1; for(auto to:g[v]){ if(!used[to.f]){ dfs(to.f); } } } double solve(int n, int m, int k, int h, vector<int> x, vector<int> y, vector<int> c, vector<int> arr){ k=min(k,70); for(int i=0;i<n;i++){ g[i].clear(); used[i]=0; } 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]}); } dfs(0); if(!used[h]){ return -1; } for(int i=0;i<n;i++){ for(int x=0;x<=k;x++){ d[i][x]=2e14; } used[i]=0; } used[h]=1; dfs(0); set<pair<double,pair<int,int>>> s; d[0][0]=0; s.insert({0,{0,0}}); for(int i=0;i<n;i++){ if(used[i] && arr[i]==0){ d[i][0]=0; s.insert({0,{i,0}}); } } while(s.size()){ int v=s.begin()->s.f,x=s.begin()->s.s; s.erase(s.begin()); if(v==h){ if(arr[h]){ d[v][x]/=2; } return d[v][x]; } for(auto To:g[v]){ int to=To.f; long long w=To.s; if(d[to][x]>d[v][x]+w){ s.erase({d[to][x],{to,x}}); d[to][x]=d[v][x]+w; s.insert({d[to][x],{to,x}}); } if(x<k && d[to][x+1]>d[v][x]/2.0+w && arr[v]==2){ s.erase({d[to][x+1],{to,x+1}}); d[to][x+1]=d[v][x]/2.0+w; s.insert({d[to][x+1],{to,x+1}}); } } } }

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:3:11: warning: control reaches end of non-void function [-Wreturn-type]
    3 | #define s second
      |           ^~~~~~
cyberland.cpp:45:34: note: in expansion of macro 's'
   45 |  set<pair<double,pair<int,int>>> s;
      |                                  ^
#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...