Submission #238601

#TimeUsernameProblemLanguageResultExecution timeMemory
238601Ruxandra985Race (IOI11_race)C++14
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> #include "race.h" #define DIMN 200010 #define MAX_N 500000 using namespace std; vector < pair <int,int> > v[DIMN]; set < pair <int,int> > per[DIMN]; int sub[DIMN] , f[DIMN] , add[DIMN] , distanta[DIMN]; int sol; void precalc (int nod , int tt){ int i , vecin; sub[nod] = 1; for (i = 0 ; i < v[nod].size() ; i++){ vecin = v[nod][i].first; if (vecin != tt && !f[vecin]){ precalc (vecin , nod); sub[nod] += sub[vecin]; } } } void dfs (int nod , int tt , int k){ int i , vecin , maxi = 0 , fiu , rms; set < pair <int,int> > :: iterator aux; for (i = 0 ; i < v[nod].size() ; i++){ vecin = v[nod][i].first; if (vecin != tt && sub[vecin] > maxi){ maxi = sub[vecin]; fiu = vecin; } } for (i = 0 ; i < v[nod].size() ; i++){ vecin = v[nod][i].first; if (vecin != tt){ dfs (vecin , nod , k); add[vecin] += v[nod][i].second; distanta[vecin]++; } } if (maxi){ per[nod].swap(per[fiu]); add[nod] = add[fiu]; distanta[nod] = distanta[fiu]; per[nod].insert(make_pair(0 , 0)); for (i = 0 ; i < v[nod].size() ; i++){ vecin = v[nod][i].first; if (vecin != tt && vecin != fiu){ per[nod].insert(make_pair(add[vecin] - add[nod] , distanta[vecin] - distanta[nod])); /// sa zicem ca nod ar fi lca - ul , un capat pana acum , unul in vecin for (set <pair <int,int> > :: iterator it = per[vecin].begin() ; it != per[vecin].end() ; it++){ if (it->first + add[vecin] > k) continue; rms = k - (it->first + add[vecin]) - add[nod]; aux = per[nod].upper_bound(make_pair(rms , 0)); if (aux->first == rms){ sol = min(sol , it->second + distanta[vecin] + aux->second + distanta[nod]); } } /// vezi cum le unesti for (set <pair <int,int> > :: iterator it = per[vecin].begin() ; it != per[vecin].end() ; it++){ if (it->first + add[vecin] > k) continue; /// nu imi pasa per[nod].insert(make_pair(it->first + add[vecin] - add[nod] , it->second + distanta[vecin] - distanta[nod])); } } } } aux = per[nod].upper_bound(make_pair(k - add[nod] , 0)); if (aux->first == k - add[nod]) sol = min(sol , aux->second + distanta[nod]); //printf ("%d %d\n" , nod , add[nod]); }

Compilation message (stderr)

race.cpp: In function 'void precalc(int, int)':
race.cpp:16:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (i = 0 ; i < v[nod].size() ; i++){
                  ~~^~~~~~~~~~~~~~~
race.cpp: In function 'void dfs(int, int, int)':
race.cpp:30:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (i = 0 ; i < v[nod].size() ; i++){
                  ~~^~~~~~~~~~~~~~~
race.cpp:39:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (i = 0 ; i < v[nod].size() ; i++){
                  ~~^~~~~~~~~~~~~~~
race.cpp:57:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for (i = 0 ; i < v[nod].size() ; i++){
                      ~~^~~~~~~~~~~~~~~
race.cpp:27:32: warning: 'fiu' may be used uninitialized in this function [-Wmaybe-uninitialized]
     int i , vecin , maxi = 0 , fiu , rms;
                                ^~~
/tmp/ccSaXJf6.o: In function `main':
grader.cpp:(.text.startup+0x20): undefined reference to `best_path(int, int, int (*) [2], int*)'
collect2: error: ld returned 1 exit status