제출 #1338133

#제출 시각아이디문제언어결과실행 시간메모리
1338133hyyhTraffic (IOI10_traffic)C++20
0 / 100
5 ms344 KiB
#include "traffic.h"
#include <vector>
#include <iostream>

using namespace std;

int const N_MAX = 1e6+10;

int const INF = 1e9+10;

int dp[N_MAX];

int val[N_MAX];

int sum = 0;

;int fin = INF;
int finnode = 0;

vector<int> adj[N_MAX];

void dfs(int n,int p){
   int ans = 0;
   //cout << n << endl;
   for(auto k:adj[n]){
      if(k == p) continue;
      dfs(k,n);
      dp[n] += dp[k]+val[k];
      ans = max(dp[k]+val[k],ans);
   }
   int parval = sum-dp[n]-val[n];
   ans = max(ans,parval);
   //cout << n << " " << ans << endl;
   if(fin > ans){
      fin = ans;
      finnode = n;
   }
}

int LocateCentre(int n, int pp[], int S[], int D[]) {
   for(int i{};i < n;i++){
      val[i] = pp[i];
      sum += pp[i];
      adj[S[i]].emplace_back(D[i]);
      adj[D[i]].emplace_back(S[i]);
   }
   dfs(0,-1);
   return finnode;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...