Submission #976834

#TimeUsernameProblemLanguageResultExecution timeMemory
976834AlperenT_Cyberland (APIO23_cyberland)C++17
15 / 100
991 ms113616 KiB
#include "cyberland.h" #include <vector> #include <bits/stdc++.h> #pragma GCC optimize("O3,unroll-loops") #define pb push_back #define F first #define S second #define all(a) a.begin(),a.end() #define pii pair <int,int> #define PII pair<pii , pii> #define ld long double #define ll long long #define sz(v) (int)v.size() #define rep(i , a , b) for(int i=a;i <= b;i++) #define per(i , a , b) for(int i=a;i >= b;i--) using namespace std ; const ll maxn = 2e5+10 , N = 1e5 +1 , maxq = 202 , inf = 1e18 , maxk = 2022 , mod =1e9+7 ; ld dis[maxn][102] ;int mark[maxn] ,is[maxn]; vector <pair<int,ld> > G[maxn] ; void dfs(int v){ is[v] =1 ; for(auto x : G[v]){ if(is[x.F]==1)continue ; dfs(x.F) ; } } double solve(int n, int m, int k, int h, vector<int> x, vector<int> y, vector<int> c, vector<int> t) { rep(i , 0 , n-1)G[i].clear() ; rep(i , 0, n-1)is[i] =0 ; rep(i , 0 ,m-1){ G[x[i]].pb({y[i] , c[i]}); G[y[i]].pb({x[i] , c[i]}) ; } dfs(h) ; if(is[0]== 0)return -1 ; k = min(k , 100); rep(j , 0 , n-1)rep(z , 0 , k)dis[j][z] = inf ; for(auto x : G[h]){ dis[x.F][0] = x.S; } ld ans =inf; rep(i , 0 , k){ priority_queue <pair<ld,int> > pq ; rep(j , 0 , n-1){ pq.push({-dis[j][i] , j}) ; mark[j] =0 ; } while(sz(pq)){ int v = pq.top().S ;pq.pop(); if(mark[v] == 1)continue; mark[v] = 1; for(auto a : G[v]){ if(a.F == h)continue ; if(dis[a.F][i] > dis[v][i]+a.S){ dis[a.F][i] = dis[v][i] + a.S ; if(a.F == 0 && dis[a.F][i] == 1.5){ cout << dis[1][2] << "<---\n"; } pq.push({-dis[a.F][i] , a.F}); } } } rep(j , 0 , n-1){ rep(z ,0 , sz(G[j])-1){ G[j][z].S /= 2.00000000 ; } } rep(j , 0 , n-1){ if(j == 0 || (t[j] == 0 && is[j] == 1)){ ans = min(ans , dis[j][i]) ; } } rep(j , 0 , n-1){ if(t[j]==2){ for(auto x : G[j]){ dis[x.F][i+1] = min(dis[j][i] + x.S , dis[x.F][i+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...