Submission #337304

#TimeUsernameProblemLanguageResultExecution timeMemory
337304bigDuckDreaming (IOI13_dreaming)C++14
0 / 100
62 ms13676 KiB
#include "dreaming.h" #include<bits/stdc++.h> using namespace std; #define INIT ios_base :: sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); #define mp make_pair #define pb push_back #define ft first #define sc second #define ll long long #define pii pair<int, int> #define count_bits __builtin_popcount vector<pii> g[100010]; int dp[100010][2]; pii dir[100010][2]; bool v[100010]; int h[100010], c; int d[100010]; int dfs(int s){ v[s]=true; for(pii e:g[s]){ int l=e.sc, u=e.ft; if(!v[u]){ dfs(u); if( (dp[u][0]+l)>dp[s][0]){ dp[s][1]=dp[s][0]; dp[s][0]=dp[u][0]+l; dir[s][1]=dir[s][0]; dir[s][0]={u, l}; } else{ if( (dp[u][0]+l)>dp[s][1] ){ dp[s][1]=dp[u][0]+l; dir[s][1]={u, l}; } } } } return dp[s][0]; } int dfs2(int s, int up){ int ac=dp[s][0]; if(ac<=up){ return ac; } int l=dir[s][0].sc; int r=dfs2(dir[s][0].ft, up+l); if( ( max(r , up+l)<max(up, dp[s][0]) ) ){ return max(r, up+l); } else{ return max(up, dp[s][0]); } } bool v2[100010]; pii diam(int s){ v2[s]=true; pii r={0, 0}; for(pii e:g[s]){ int u=e.ft, l=e.sc; if(!v2[u]){ pii p=diam(u); p.ft+=l; if(p.ft>=r.ft){ r=p; } } } v2[s]=false; return r; } int travelTime(int n, int m, int l, int a[], int b[], int t[]){ for(int i=0;i<m; i++){ int u=a[i], v=b[i]; g[u].pb({v, t[i]}); g[v].pb({u, t[i]}); } int res=0; for(int i=0; i<n; i++){ if(!v[i]){ c++; dfs(i); int r=dfs2(i, dp[i][1]); pii p=diam(i); p=diam(p.sc); d[c]=p.ft; h[c]=r; res=max(res, d[c]); } } sort(h+1, h+1+c); int cr=h[c]+l; for(int i=c-1; i>=1; i--){ res=max(res, cr+h[i]); cr+=l; } return res; }
#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...