Submission #224782

#TimeUsernameProblemLanguageResultExecution timeMemory
224782nafis_shifatDreaming (IOI13_dreaming)C++14
100 / 100
148 ms24028 KiB
#include "dreaming.h" #include<bits/stdc++.h> #define pii pair<int,int> #define ll long long using namespace std; const int mxn=1e5+6; vector<int> adj[mxn]; vector<int> cost[mxn]; int m1[mxn]={}; int m2[mxn]={}; int u1[mxn]; int ans=0; int vis[mxn]={}; void dfs(int cur,int prev) { vis[cur]=1; for(int i=0;i<adj[cur].size();i++) { int v=adj[cur][i]; int c=cost[cur][i]; if(v==prev)continue; dfs(v,cur); int k=m1[v]+c; if(k>m1[cur]) { m2[cur]=m1[cur]; m1[cur]=k; u1[cur]=v; } else if(k>m2[cur]) m2[cur]=k; } } vector<int> v; void calc(int cur,int prev,int cst) { v.push_back(max(cst,m1[cur])); ans=max(ans,cst+m1[cur]); for(int i=0;i<adj[cur].size();i++) { int v=adj[cur][i]; int c=cost[cur][i]; if(v==prev)continue; int tmp=cst+c; if(v==u1[cur])tmp=max(tmp,m2[cur]+c); else tmp=max(tmp,m1[cur]+c); calc(v,cur,tmp); } } int travelTime(int N, int M, int L, int A[], int B[], int T[]) { for(int i=0;i<M;i++) { adj[A[i]].push_back(B[i]); adj[B[i]].push_back(A[i]); cost[A[i]].push_back(T[i]); cost[B[i]].push_back(T[i]); } vector<int> fn; for(int i=0;i<N;i++) { if(vis[i])continue; dfs(i,-1); calc(i,-1,0); sort(v.begin(),v.end()); fn.push_back(v[0]); v.clear(); } sort(fn.begin(),fn.end(),greater<int>()); if(fn.size()>1) { ans=max(ans,fn[0]+fn[1]+L); } if(fn.size()>2) { ans=max(ans,fn[1]+fn[2]+2*L); } return ans; }

Compilation message (stderr)

dreaming.cpp: In function 'void dfs(int, int)':
dreaming.cpp:20:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0;i<adj[cur].size();i++)
              ~^~~~~~~~~~~~~~~~
dreaming.cpp: In function 'void calc(int, int, int)':
dreaming.cpp:49:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0;i<adj[cur].size();i++)
              ~^~~~~~~~~~~~~~~~
#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...