Submission #471372

#TimeUsernameProblemLanguageResultExecution timeMemory
471372PiejanVDCDreaming (IOI13_dreaming)C++17
47 / 100
208 ms26108 KiB
#include "dreaming.h" #include <bits/stdc++.h> using namespace std; vector<vector<pair<int,int>>>adj; bool vis[100000]; map<int,int>mp,cnt; vector<int>connect; int dd(int node, int e) { vis[node]=true; int mx = 0, prev = node; for(auto z : adj[node]) { if(z.first == e) continue; auto ret = dd(z.first,node); if(mx < ret+z.second) mx=ret+z.second,prev=z.first; } mp[node]=prev,cnt[node]=mx; return mx; } pair<int,int> d(int node, int e) { vis[node]=true; pair<int,int>mx = {0,node}; for(auto z : adj[node]) { if(z.first == e) continue; auto ret = d(z.first,node); if(mx.first < ret.first+z.second) mx.first=ret.first+z.second,mx.second=ret.second; } return mx; } void dia(int node) { int nd = d(node,-1).second; auto ans = dd(nd,-1); int curr = nd; while(cnt[mp[curr]] > ans/2) curr=mp[curr]; if(cnt[curr] <= ans - cnt[mp[curr]]) { connect.push_back(curr); } else connect.push_back(mp[curr]); return; } int travelTime(int n, int m, int l, int a[], int b[], int t[]) { adj.resize(n); for(int i = 0 ; i < m ; i++) { adj[a[i]].push_back(make_pair(b[i],t[i])); adj[b[i]].push_back(make_pair(a[i],t[i])); } for(int i = 0 ; i < n ; i++) { if(vis[i]) continue; dia(i); } for(int i = 0 ; i < connect.size()-1 ; i++) { adj[connect[i]].push_back(make_pair(connect[i+1],l)); adj[connect[i+1]].push_back(make_pair(connect[i],l)); } int edge = d(0,-1).second; return d(edge,-1).first; }

Compilation message (stderr)

dreaming.cpp: In function 'int travelTime(int, int, int, int*, int*, int*)':
dreaming.cpp:56:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   56 |  for(int i = 0 ; i < connect.size()-1 ; 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...