Submission #37937

#TimeUsernameProblemLanguageResultExecution timeMemory
3793714kgDreaming (IOI13_dreaming)C++11
47 / 100
142 ms13748 KiB
#include "dreaming.h" #include <vector> #define N 100001 #define INF 2000000000 using namespace std; int n, L, out, max_len, MAX1, MAX2; int gd[N]; bool check[N], gd_check[N]; vector<pair<int,int> > r[N]; int max_f(int x, int y) { return x>y?x:y; } int min_f(int x, int y) { return x<y?x:y; } int g(int lev, int up_node){ if(!gd_check[lev]){ gd_check[lev]=true; for(vector<pair<int,int> >::iterator it=r[lev].begin(); it!=r[lev].end(); it++) if(it->first!=up_node) gd[lev]=max_f(gd[lev],it->second+g(it->first,lev)); } return gd[lev]; } void f(int lev, int up_len){ int max1=0, max2=0, path, temp; check[lev]=true; for(vector<pair<int,int> >::iterator it=r[lev].begin(); it!=r[lev].end(); it++) { if(!check[it->first]) temp=g(it->first,lev)+it->second; else temp=up_len; if(max1<temp){ max2=max1, max1=temp; path=it->first; } else if(max2<temp) max2=temp; } out=max_f(out,max1+max2); max_len=min_f(max_len,max1); for(vector<pair<int,int> >::iterator it=r[lev].begin(); it!=r[lev].end(); it++) if(!check[it->first]) f(it->first,(path==it->first?max2:max1)+it->second); } int travelTime(int _n, int m, int _L, int _a[], int _b[], int _t[]) { int x, y; n=_n, L=_L; for(int i=0; i<m; i++){ x=_a[i]+1, y=_b[i]+1; r[x].push_back({y,_t[i]}), r[y].push_back({x,_t[i]}); } for(int i=1; i<=n; i++) if(!check[i]){ max_len=INF, f(i,0); if(MAX1<max_len) MAX2=MAX1, MAX1=max_len; else if(MAX2<max_len) MAX2=max_len; } return max_f(out,MAX1+MAX2+L); }

Compilation message (stderr)

dreaming.cpp: In function 'void f(int, int)':
dreaming.cpp:41:59: warning: 'path' may be used uninitialized in this function [-Wmaybe-uninitialized]
         if(!check[it->first]) f(it->first,(path==it->first?max2:max1)+it->second);
                                           ~~~~~~~~~~~~~~~~^~~~~~~~~~~
#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...