Submission #985149

#TimeUsernameProblemLanguageResultExecution timeMemory
985149Sir_Ahmed_ImranCyberland (APIO23_cyberland)C++17
49 / 100
3038 ms33992 KiB
///~~~LOTA~~~/// #include "cyberland.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define ld long double #define append push_back #define add insert #define nl '\n' #define ff first #define ss second #define pii pair<int,int> #define pll pair<ll,ll> #define all(x) (x).begin(),(x).end() #define L0TA ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL) #define terminator main #define N 100000 #define K 31 int t; int vis[N]; double dp[N][K]; vector<pair<int,double>> a[N]; void dfs(int v){ if(vis[v] || v==t) return; vis[v]=1; for(auto& i:a[v]) dfs(i.ff); } double solve(int n,int m,int k,int h,vector<int> x,vector<int> y,vector<int> c,vector<int> arr){ t=h; int p; double q,r; for(int i=0;i<n;i++){ for(int j=0;j<=k;j++) dp[i][j]=1e17; a[i].clear(); vis[i]=0; } for(int i=0;i<m;i++){ a[x[i]].append({y[i],c[i]}); a[y[i]].append({x[i],c[i]}); } dfs(0); r=1e17; priority_queue<pair<double,int>,vector<pair<double,int>>,greater<pair<double,int>>> Q; for(int i=0;i<n;i++) if(vis[i] && !arr[i]) dp[i][0]=0; for(int j=dp[0][0]=0;j<=k;j++){ for(int i=0;i<n;i++){ Q.push({dp[i][j],i}); vis[i]=0; } while(!Q.empty()){ p=Q.top().ss; q=Q.top().ff; Q.pop(); if(!vis[p]){ vis[p]=1; if(p==h){ r=min(r,q); continue; } if(j<k) dp[p][j+1]=min(q,dp[p][j+1]); for(auto& i:a[p]){ if(arr[i.ff]==2 && j<k) dp[i.ff][j+1]=min(dp[i.ff][j+1],(q+i.ss)/2); if(!vis[i.ff]) Q.push({q+i.ss,i.ff}); } } } } if(r==1e17) r=-1; return r; }
#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...