Submission #96740

#TimeUsernameProblemLanguageResultExecution timeMemory
96740figter001Dreaming (IOI13_dreaming)C++14
14 / 100
90 ms10232 KiB
#include "dreaming.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 1e5; vector<pair<int,int>> g[maxn]; bool vis[maxn]; vector<int> c; int sz[maxn],mx,to,used[maxn]; void dfs(int u){ vis[u] = 1; for(pair<int,int> cur : g[u]){ int v = cur.first; int w = cur.second; if(vis[v])continue; sz[v] = w; dfs(v); sz[u] += sz[v]; } } void find(int s){ dfs(s); int all = sz[s]; while(1){ int nxt = s; int l = 0,mx = 1; for(pair<int,int> cur : g[s]){ int v = cur.first; int w = cur.second; if(sz[v] > (all+1) / 2){ nxt = v; l = w; mx = max(mx,sz[v]); } } if(used[s]){ if(used[nxt] < used[s])s = nxt; break; } if(nxt == s)break; sz[nxt] -= l; sz[s] = all - sz[nxt]; used[s] = mx; s = nxt; } c.push_back(s); } void path(int u,int cost){ vis[u] = 1; if(cost > mx){ mx = cost; to = u; } for(pair<int,int> cur : g[u]){ int v = cur.first; int w = cur.second; if(vis[v])continue; path(v,cost + w); } } int travelTime(int N, int M, int L, int A[], int B[], int T[]) { for(int i=0;i<M;i++){ g[A[i]].push_back({B[i],T[i]}); g[B[i]].push_back({A[i],T[i]}); } for(int i=0;i<N;i++) if(!vis[i]) find(i); // cout << c[0] << ' '; for(int i=1;i<c.size();i++){ // cout << c[i] << ' '; g[c[i]].push_back({c[0],L}); g[c[0]].push_back({c[i],L}); } // printf("\n"); memset(vis,0,sizeof(vis)); path(0,0); memset(vis,0,sizeof(vis)); mx = 0; path(to,0); return mx; }

Compilation message (stderr)

dreaming.cpp: In function 'int travelTime(int, int, int, int*, int*, int*)':
dreaming.cpp:77:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=1;i<c.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...