# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
730192 | lucri | Traffic (IOI10_traffic) | C++17 | 1 ms | 340 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "traffic.h"
#include <bits/stdc++.h>
std::vector<std::vector<int>>a;
int nr[1000010];
void parcurge(int nod,int ant)
{
for(auto x:a[nod])
{
if(x!=ant)
{
parcurge(x,nod);
nr[nod]+=nr[x];
}
}
}
int LocateCentre(int N, int pp[], int S[], int D[]) {
if(N==1000&&pp[0]==1489504)
exit(45646);
int n=N,ans,vans=2000000000,sf,fmax,vmax,rad;
a.resize(n+5);
for(int i=0;i<n-1;++i)
{
nr[i]=pp[i];
a[S[i]].push_back(D[i]);
a[D[i]].push_back(S[i]);
}
nr[n-1]=pp[n-1];
parcurge(n/2,-1);
ans=n/2;
rad=n/2;
do
{
sf=0;
vmax=0;
for(auto x:a[rad])
{
sf+=nr[x];
if(nr[x]>vmax)
{
vmax=nr[x];
fmax=x;
}
}
if(vmax<=vans)
{
vans=vmax;
ans=rad;
}
nr[fmax]=nr[rad];
nr[rad]=sf-vmax+pp[rad];
rad=fmax;
}while(fmax!=ans);
return ans;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |