Submission #41841031


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rep(i,a,n) for (int i=a;i<(int)(n);i++)
// #define per(i,a,n) for (ll i=n;i-->(ll)(a);)

// 2 * math.log(200000)/math.log(2) = 35.219280948873624
const int lim = 50;
const int INF=0x3f3f3f3f;
ll read(){ll r;scanf("%lld",&r);return r;}

vector<int> e[200010];
array<vector<int>,3> dp[200010]; // dp[u][与子树连的个数][向下最多颜色] = 以下已有贡献最多颜色
auto chmin=[](auto&a,const auto &b){a=min(a,b);};
int sz[200010];
auto _=[](int siz){return min(siz,lim);};

void dfs(int u,int f){
  sz[u] = 1; // 重用
  rep(c,0,3) dp[u][c] = vector(1+2,INF);
  dp[u][0][1] = 1;

  auto merge=[&](int v){
    array<vector<int>,3> ndp;
    rep(c,0,3) ndp[c] = vector(_(sz[u]+sz[v])+1,INF);
    rep(i,1,_(sz[u])+1) rep(c0,0,3) rep(j,1,_(sz[v])+1) rep(c1,0,3) {
      chmin(ndp[c0  ][max(i,j+1)], max({dp[u][c0][i], dp[v][c1][j], i+j})); // 不连u-v
      if(c0 < 2 and c1 < 2){
      chmin(ndp[c0+1][max(i,j  )], max({dp[u][c0][i], dp[v][c1][j], i+j-1})); // 连 u-v
      }
    }
    sz[u] += sz[v];
    rep(c,0,3) {
      dp[u][c].resize(_(sz[u])+2,INF);
      rep(j,1,_(sz[u])+1) dp[u][c][j] = ndp[c][j];
    }
  };

  for(auto v:e[u]) if(v!=f){
    dfs(v,u);
    merge(v);
  }
}

int main(){
  int n=read();
  rep(i,1,n){
    int u=read();
    int v=read();
    e[u].push_back(v);
    e[v].push_back(u);
  }
  dfs(1,-1);
  int ans = INF;
  rep(c,0,3) rep(i,1,_(sz[1])+1) chmin(ans, dp[1][c][i]);
  assert(ans <= lim);
  printf("%d\n",ans);
  return 0;
}

Submission Info

Submission Time
Task Ex - Optimal Path Decomposition
User cromarmot
Language C++ (GCC 9.2.1)
Score 600
Code Size 1546 Byte
Status AC
Exec Time 721 ms
Memory 212444 KiB

Compile Error

./Main.cpp: In function ‘ll read()’:
./Main.cpp:10:21: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   10 | ll read(){ll r;scanf("%lld",&r);return r;}
      |                ~~~~~^~~~~~~~~~~

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 3
AC × 47
Set Name Test Cases
Sample sample00.txt, sample01.txt, sample02.txt
All sample00.txt, sample01.txt, sample02.txt, testcase00.txt, testcase01.txt, testcase02.txt, testcase03.txt, testcase04.txt, testcase05.txt, testcase06.txt, testcase07.txt, testcase08.txt, testcase09.txt, testcase10.txt, testcase11.txt, testcase12.txt, testcase13.txt, testcase14.txt, testcase15.txt, testcase16.txt, testcase17.txt, testcase18.txt, testcase19.txt, testcase20.txt, testcase21.txt, testcase22.txt, testcase23.txt, testcase24.txt, testcase25.txt, testcase26.txt, testcase27.txt, testcase28.txt, testcase29.txt, testcase30.txt, testcase31.txt, testcase32.txt, testcase33.txt, testcase34.txt, testcase35.txt, testcase36.txt, testcase37.txt, testcase38.txt, testcase39.txt, testcase40.txt, testcase41.txt, testcase42.txt, testcase43.txt
Case Name Status Exec Time Memory
sample00.txt AC 24 ms 22444 KiB
sample01.txt AC 20 ms 22488 KiB
sample02.txt AC 24 ms 22544 KiB
testcase00.txt AC 18 ms 22432 KiB
testcase01.txt AC 26 ms 22488 KiB
testcase02.txt AC 721 ms 202900 KiB
testcase03.txt AC 715 ms 212444 KiB
testcase04.txt AC 677 ms 185164 KiB
testcase05.txt AC 672 ms 187772 KiB
testcase06.txt AC 664 ms 188324 KiB
testcase07.txt AC 651 ms 186292 KiB
testcase08.txt AC 440 ms 46064 KiB
testcase09.txt AC 441 ms 46324 KiB
testcase10.txt AC 464 ms 47340 KiB
testcase11.txt AC 441 ms 45800 KiB
testcase12.txt AC 589 ms 59004 KiB
testcase13.txt AC 573 ms 57848 KiB
testcase14.txt AC 554 ms 56480 KiB
testcase15.txt AC 597 ms 59328 KiB
testcase16.txt AC 554 ms 56480 KiB
testcase17.txt AC 590 ms 58492 KiB
testcase18.txt AC 597 ms 58700 KiB
testcase19.txt AC 587 ms 57676 KiB
testcase20.txt AC 500 ms 47728 KiB
testcase21.txt AC 507 ms 47032 KiB
testcase22.txt AC 538 ms 48912 KiB
testcase23.txt AC 506 ms 47632 KiB
testcase24.txt AC 537 ms 54072 KiB
testcase25.txt AC 572 ms 56044 KiB
testcase26.txt AC 580 ms 56636 KiB
testcase27.txt AC 527 ms 54132 KiB
testcase28.txt AC 562 ms 56176 KiB
testcase29.txt AC 548 ms 55452 KiB
testcase30.txt AC 558 ms 56264 KiB
testcase31.txt AC 552 ms 56068 KiB
testcase32.txt AC 553 ms 55508 KiB
testcase33.txt AC 565 ms 56624 KiB
testcase34.txt AC 571 ms 56896 KiB
testcase35.txt AC 522 ms 54140 KiB
testcase36.txt AC 547 ms 55800 KiB
testcase37.txt AC 559 ms 56616 KiB
testcase38.txt AC 529 ms 54060 KiB
testcase39.txt AC 526 ms 54048 KiB
testcase40.txt AC 549 ms 55088 KiB
testcase41.txt AC 538 ms 55140 KiB
testcase42.txt AC 551 ms 56488 KiB
testcase43.txt AC 528 ms 54204 KiB