제출 #407084

#제출 시각아이디문제언어결과실행 시간메모리
407084Antekb통행료 (IOI18_highway)C++14
51 / 100
232 ms9340 KiB
#include "highway.h" #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=1e5+5; int d[N]; vector<int> E[N], U, V; int n, a, b, m; int dist; void bfs(int s){ for(int i=0; i<n; i++){ d[i]=0; } vector<int> V; d[s]=1; V.push_back(s); for(int i=0; i<V.size(); i++){ int v=V[i]; for(int u:E[v]){ if(!d[u]){ d[u]=d[v]+1; V.push_back(u); } } } /*for(int i=0; i<n; i++){ cout<<d[i]<<" "; } cout<<"\n";*/ } int ile_wys_max(int D){ vector<int> w(m); for(int i=0; i<m; i++){ if(max(d[U[i]], d[V[i]])<=D)w[i]=1; } ll k=ask(w); if(D==0)dist=k/a; //cout<<D<<" "<<dist<<" "<<(k-dist*a)/(b-a)<<"\n"; return (k-dist*1ll*a)/(b-a); } int ile_wys_dokl(int D, int j){ vector<int> w(m); for(int i=0; i<m; i++){ if(max(d[U[i]], d[V[i]])==D && i<=j)w[i]=1; } ll k=ask(w); //cout<<D<<" "<<j<<" "<<(k-dist*a)/(b-a)<<"\n"; return (k-dist*1ll*a)/(b-a); } void find_pair(int nn, std::vector<int> U2, std::vector<int> V2, int A, int B) { n=nn; a=A; b=B; U=U2; V=V2; m = U.size(); if(m!=n-1){ answer(1, 3); return; } for(int i=0; i<m; i++){ E[U[i]].push_back(V[i]); E[V[i]].push_back(U[i]); } bfs(0); ile_wys_max(0); int l=0, r=n; while(l<r){ int m=(l+r)>>1; if(ile_wys_max(m)==dist)r=m; else l=m+1; } //cout<<l<<"\n"; int dep=l; l=0, r=n; while(l<r){ int m=(l+r)>>1; if(ile_wys_dokl(dep, m)==0)l=m+1; else r=m; } //cout<<l<<"\n"; int s=U[l]; if(d[s]!=dep)s=V[l]; //cout<<s<<"\n"; bfs(s); l=0, r=n; while(l<r){ int m=(l+r)>>1; if(ile_wys_dokl(dist+1, m)==0)l=m+1; else r=m; } int t=U[l]; if(d[t]!=dist+1)t=V[l]; //cout<<t<<"\n"; answer(s, t); }

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

highway.cpp: In function 'void bfs(int)':
highway.cpp:17:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   17 |  for(int i=0; i<V.size(); 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...