제출 #961955

#제출 시각아이디문제언어결과실행 시간메모리
961955ASGA_RedSea사이버랜드 (APIO23_cyberland)C++17
0 / 100
2158 ms2097152 KiB
/** * بسم الله الرحمن الرحيم * ﴾ رَبِّ اشْرَحْ لِي صَدْرِي * وَيَسِّرْ لِي أَمْرِي * وَاحْلُلْ عُقْدَةً مِّن لِّسَانِي * يَفْقَهُوا قَوْلِي ﴿ */ /// author : "ASGA_RedSea" #include <bits/stdc++.h> using namespace std; using ll = long long; using ld = long double; double solve(int n,int m,int k,int H,vector <int> x,vector <int> y,vector <int> t,vector <int> aa); vector <vector <pair <int,int>>> a; vector <double> v; vector <int> vis,s; int h; bool calc1(int i){ if(i == h)return 1; for(auto& j : a[i]){ if(vis[j.first])continue; vis[j.first]++; if(calc1(j.first))return 1; } return 0; } double calc(int i,double time,int k,int last){ if(i == h)return time; double ret = LLONG_MAX; for(auto& [j,t] : a[i]){ if(j == last)continue; if(s[j] == 0){ if(v[j] - 0.000000000000 <= 1e-7)continue; v[j] = 0.000000000000; ret = min(ret,calc(j,0.000000000000,k,i)); } else if(s[j] == 1){ if(v[j] - (time + t) <= 1e-7)continue; v[j] = time + t; ret = min(ret,calc(j,time + t,k,i)); } else{ if(v[j] - (time + t) <= 1e-7)continue; if(k > 0)ret = min(ret,calc(j,(time + t) / 2.000000000000,k - 1,i)); ret = min(ret,calc(j,time,k,i)); } } return ret; } double solve(int n,int m,int k,int H,vector <int> x,vector <int> y,vector <int> t,vector <int> aa){ a.resize(n);h = H;s = aa; for(int i = 0;i < m;i++){ a[x[i]].push_back({y[i],t[i]}); a[y[i]].push_back({x[i],t[i]}); } vis = vector <int> (n,0); if(calc1(0) == 0)return -1; v = vector <double> (n,LLONG_MAX); double ans = calc(0,0.000000000000,k,-1); return 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...