제출 #91516

#제출 시각아이디문제언어결과실행 시간메모리
91516faustaadp경주 (Race) (IOI11_race)C++17
100 / 100
1071 ms114648 KiB
#include "race.h" #include<bits/stdc++.h> #define ll long long #define pb push_back #define mp make_pair #define fi first #define se second using namespace std; ll n,k,has,b[202020],besar[202020],calon,me[1010101],i; vector<ll> v[202020]; vector<ll> w[202020]; void dfs(ll aa,ll bb,ll cc) { ll ii,ma=0; besar[aa]=1; for(ii=0;ii<v[aa].size();ii++) if((v[aa][ii]!=bb)&&(!b[v[aa][ii]])) { dfs(v[aa][ii],aa,cc); besar[aa]+=besar[v[aa][ii]]; ma=max(ma,besar[v[aa][ii]]); } //cout<<aa<<" "<<ma<<" "<<(cc-besar[aa])<<"\n"; if((ma<=(cc/2))&&((cc-besar[aa])<=(cc/2)))calon=aa; } void dfs2(ll aa,ll bb) { ll ii,ma=0; besar[aa]=1; for(ii=0;ii<v[aa].size();ii++) if((v[aa][ii]!=bb)&&(!b[v[aa][ii]])) { dfs2(v[aa][ii],aa); besar[aa]+=besar[v[aa][ii]]; } // cout<<aa<<" "<<ma<<" "<<(cc-besar[aa])<<"\n"; // if((ma<=(cc/2))&&((cc-besar[aa])<=(cc/2)))calon=aa; } vector<pair<ll,ll> > isi; void cari(ll aa,ll bb,ll cc,ll dd) { if(dd>k)return ; //cout<<aa<<" "<<bb<<" "<<cc<<" "<<dd<<" "<<me[k-dd]<<"\n"; if(me[k-dd]!=0)has=min(has,cc+me[k-dd]); isi.pb(mp(cc,dd)); ll ii; for(ii=0;ii<v[aa].size();ii++) if((v[aa][ii]!=bb)&&(!b[v[aa][ii]])) cari(v[aa][ii],aa,cc+1,dd+w[aa][ii]); } void cari(ll aa,ll bb) { // cout<<aa<<" "<<bb<<"\n"; calon=-1; dfs(aa,aa,bb); ll C0=calon; // cout<<calon<<"\n"; ll ii,jj; vector<ll> ini; vector<ll> BS; for(ii=0;ii<v[calon].size();ii++) { if(b[v[calon][ii]])continue; //cout<<calon<<" "<<v[calon][ii]<<" x\n"; isi.clear(); cari(v[calon][ii],calon,1,w[calon][ii]); for(jj=0;jj<isi.size();jj++) { //cout<<jj<<"->"<<k-isi[jj].se<<"\n"; if((me[isi[jj].se]==0)||(me[isi[jj].se]>isi[jj].fi)) me[isi[jj].se]=isi[jj].fi; ini.pb(isi[jj].se); } if(me[k]!=0)has=min(has,me[k]); } for(ii=0;ii<ini.size();ii++) me[ini[ii]]=0; b[calon]=1; dfs2(calon,calon); ll te=0; for(ii=0;ii<v[C0].size();ii++) { if(b[v[C0][ii]])continue; //cout<<calon<<" "<<v[calon][ii]<<" z\n"; cari(v[C0][ii],besar[v[C0][ii]]); //te++; } } int best_path(int N, int K, int H[][2], int L[]) { n=N; k=K; has=1e18; for(i=0;i<(n-1);i++) { v[H[i][0]].pb(H[i][1]); w[H[i][0]].pb(L[i]); v[H[i][1]].pb(H[i][0]); w[H[i][1]].pb(L[i]); } cari(0,N); if(has==1e18)has=-1; return has; }

컴파일 시 표준 에러 (stderr) 메시지

race.cpp: In function 'void dfs(long long int, long long int, long long int)':
race.cpp:16:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(ii=0;ii<v[aa].size();ii++)
              ~~^~~~~~~~~~~~~
race.cpp: In function 'void dfs2(long long int, long long int)':
race.cpp:30:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(ii=0;ii<v[aa].size();ii++)
              ~~^~~~~~~~~~~~~
race.cpp:28:11: warning: unused variable 'ma' [-Wunused-variable]
     ll ii,ma=0;
           ^~
race.cpp: In function 'void cari(long long int, long long int, long long int, long long int)':
race.cpp:47:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(ii=0;ii<v[aa].size();ii++)
              ~~^~~~~~~~~~~~~
race.cpp: In function 'void cari(long long int, long long int)':
race.cpp:61:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(ii=0;ii<v[calon].size();ii++)
              ~~^~~~~~~~~~~~~~~~
race.cpp:67:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(jj=0;jj<isi.size();jj++)
                  ~~^~~~~~~~~~~
race.cpp:76:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(ii=0;ii<ini.size();ii++)
              ~~^~~~~~~~~~~
race.cpp:81:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(ii=0;ii<v[C0].size();ii++)
              ~~^~~~~~~~~~~~~
race.cpp:80:8: warning: unused variable 'te' [-Wunused-variable]
     ll te=0;
        ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...