# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
673773 | Cookie | Traffic (IOI10_traffic) | C++14 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
using namespace std;
#include "traffic.h"
//#pragma GCC optimize("O3")
//#pragma GCC optimize("unroll-loops")
#define ll long long
#define vt vector
#define pb push_back
#define fi first
#define se second
#define forr(i, a, b) for(int i = a; i < b; i++)
#define dorr(i, a, b) for(int i = a; i >= b; i--)
typedef unsigned long long ull;
#include<fstream>
ifstream fin("ss.inp");
ofstream fout("ss.out");
#define pii pair<int, int>
#define pll pair<ll, ll>
const ll mod = 1e9 + 7, mod2 = 1e9 + 9;
const int mxn = 5e4, mxq = 1e5, sq = 800, mxm = 1e5;
int n;
vt<int>adj[mxn + 1];
ll ans = 1e16, id = -1;
void dfs(int s, int pre){
sm[s] = a[s];
ll mx = 0;
for(auto i: adj[s]){
if(i != pre){
dfs(i, s);
sm[s] += sm[i]; mx = max(mx, sm[i]);
}
}
mx = max(mx, all - sm[s]);
if(mx < ans){
ans = mx; id = s;
}
}
int LocateCentre(int n, int a[], int s[], int d[]) {
for(int i = 0; i < n; i++){
all += 1LL * a[i];
}
forr(i, 0, n - 1){
adj[s[i]].pb(d[i]); adj[d[i]].pb(s[i]);
}
dfs(0, -1);
return(id);
}