Submission #110460

#TimeUsernameProblemLanguageResultExecution timeMemory
110460ioilolcomDreaming (IOI13_dreaming)C++14
18 / 100
272 ms24412 KiB
#include "dreaming.h" #include <bits/stdc++.h> #define y second #define x first #define ll long long int #define pb push_back #define pii pair<int,int> using namespace std; const int N=1e5+7; vector<pair<int,int> > adj[N]; bool vis[N]; void dfs(int node,int p,int length,pii &ans){ vis[node]=1; for(auto vertice:adj[node]) { if(vertice.x==p) { continue; } dfs(vertice.x,node,length+vertice.y,ans); } if(length>ans.y) { ans.x=node; ans.y=length; } } bool fn(int node, int pnode, int target,vector<int> &path){ if(node == target) return 1; for(auto &i : adj[node]) { if(i.first == pnode) continue; if(fn(i.first, node, target,path) == 0) continue; path.push_back(i.first); return 1; } return 0; } int travelTime(int N, int M, int L, int A[], int B[], int T[]) { int n=N; int m=M; int l=L; vector<int> radius; map<pair<int,int>,int> cost; for(int i=0; i<M; i++) { int u=A[i]; int v=B[i]; int w=T[i]; adj[u].pb({v,w}); adj[v].pb({u,w}); cost[{u,v}]=cost[{v,u}]=w; } int d=0; for(int i=0; i<n; i++) { if(vis[i]) continue; pii s={-1,-1}; dfs(i,-1,0,s); pii e={-1,-1}; dfs(s.first,-1,0,e); int diameter=e.y; vector<int> path; fn(s.x,e.x,0,path); int sz=(int)path.size(); int rad=diameter; int cur=diameter; d=max(d,diameter); for(int j=1; j<sz; j++) { cur-=cost[{path[j],path[j-1]}]; rad=min(rad,max(diameter-cur,cur)); } radius.push_back(rad); } int szz=(int)radius.size(); if(szz==1) return d; sort(radius.rbegin(),radius.rend()); if(szz==2) { // lol=max(lol,radius[0]+radius[1]+l); return max(d,radius[0]+radius[1]+l); } return max(d,max(radius[0]+radius[1]+l,radius[1]+radius[2]+2*l)); }

Compilation message (stderr)

dreaming.cpp: In function 'int travelTime(int, int, int, int*, int*, int*)':
dreaming.cpp:37:6: warning: unused variable 'm' [-Wunused-variable]
  int m=M;
      ^
#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...