Submission #2501455


Source Code Expand

// eddy1021
#pragma GCC optimize("O3")
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL mod7=1000000007LL;
inline LL getint(){
  LL _x=0,_tmp=1; char _tc=getchar();    
  while( (_tc<'0'||_tc>'9')&&_tc!='-' ) _tc=getchar();
  if( _tc == '-' ) _tc=getchar() , _tmp = -1;
  while(_tc>='0'&&_tc<='9') _x*=10,_x+=(_tc-'0'),_tc=getchar();
  return _x*_tmp;
}
inline LL add(LL _x, LL _y, LL _mod=mod7){
  _x+=_y;
  return _x>=_mod ? _x-_mod : _x;
}
inline LL sub(LL _x, LL _y, LL _mod=mod7){
  _x-=_y;
  return _x<0 ? _x+_mod : _x;
}
inline LL mul(LL _x, LL _y ,LL _mod=mod7){
  _x*=_y;
  return _x>=_mod ? _x%_mod : _x;
}
LL mypow(LL _a, LL _x, LL _mod){
  if(_x == 0) return 1LL;
  LL _ret = mypow(mul(_a, _a, _mod), _x>>1, _mod);
  if(_x & 1) _ret=mul(_ret, _a, _mod);
  return _ret;
}
LL mymul(LL _a, LL _x, LL _mod){
  if(_x == 0) return 0LL;
  LL _ret = mymul(add(_a, _a, _mod), _x>>1, _mod);
  if(_x & 1) _ret=add(_ret, _a, _mod);
  return _ret;
}
void sleep(double sec = 1021){
  clock_t s = clock();
  while(clock() - s < CLOCKS_PER_SEC * sec);
}
#define Bye exit(0)
int __ = 1 , _cs;
/*********default*********/
const int N=101010;
void build(){

}
int n, vl[N];
vector<int> v[N];
char c[N];
void init(){
  n=getint();
  for(int i=1; i<n; i++){
    int ui=getint();
    int vi=getint();
    v[ui].push_back(vi);
    v[vi].push_back(ui);
  }
  scanf("%s", c+1);
  for(int i=1; i<=n; i++)
    vl[i]=(c[i] == 'W');
}
int root, sz[N];
void go(int now, int prt){
  sz[now]=(c[now] == 'W');
  for(int son: v[now]){
    if(son == prt) continue;
    go(son, now);
    sz[now]+=sz[son];
  }
}
int cnt[N], ans, bst, dp[N][2];
void DP(int now, int prt){
  for(int son: v[now]){
    if(son == prt or sz[son] == 0)
      continue;
    cnt[now] ++;
    DP(son, now);
    ans+=2;
  }
  for(int son: v[now]){
    if(son == prt or sz[son] == 0)
      continue;
    int tdp[2];
    tdp[0]=(1+(((vl[son]+cnt[son]+1)&1)?1:-1))+dp[son][0];
    tdp[1]=(1+(((vl[now]+cnt[now]+(now != prt))&1)?1:-1))+dp[son][1];
    bst=max(bst, tdp[0]+dp[now][1]);
    bst=max(bst, tdp[1]+dp[now][0]);
    dp[now][0]=max(dp[now][0], tdp[0]);
    dp[now][1]=max(dp[now][1], tdp[1]);
  }
  //printf("%d: %d %d\n", now, dp[now][0], dp[now][1]);
  ans+=(vl[now]+cnt[now]+(now!=prt))&1;
}
void solve(){
  for(int i=1; i<=n; i++)
    if(c[i] == 'W'){
      root=i;
      break;
    }
  if(!root){
    cout<<0<<endl;
    exit(0);
  }
  go(root, root);
  DP(root, root);
  cout<<ans-bst<<endl;
}
int main(){
  build();
  //__ = getint();
  while(__ --){
    init();
    solve();
  }
}

Submission Info

Submission Time
Task F - Monochrome Cat
User eddy1021
Language C++14 (GCC 5.4.1)
Score 800
Code Size 2687 Byte
Status AC
Exec Time 44 ms
Memory 15616 KB

Compile Error

./Main.cpp: In function ‘void init()’:
./Main.cpp:60:19: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   scanf("%s", c+1);
                   ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 800 / 800
Status
AC × 4
AC × 118
Set Name Test Cases
Sample 0_000.txt, 0_001.txt, 0_002.txt, 0_003.txt
All 0_000.txt, 0_001.txt, 0_002.txt, 0_003.txt, 1_003.txt, 1_004.txt, 1_005.txt, 1_006.txt, 1_007.txt, 1_008.txt, 1_009.txt, 1_010.txt, 1_011.txt, 1_012.txt, 1_013.txt, 1_014.txt, 1_015.txt, 1_016.txt, 1_017.txt, 1_018.txt, 1_019.txt, 1_020.txt, 1_021.txt, 1_022.txt, 1_023.txt, 1_024.txt, 1_025.txt, 1_026.txt, 1_027.txt, 1_028.txt, 1_029.txt, 1_030.txt, 1_031.txt, 1_032.txt, 1_033.txt, 1_034.txt, 1_035.txt, 1_036.txt, 1_037.txt, 1_038.txt, 1_039.txt, 1_040.txt, 1_041.txt, 1_042.txt, 1_043.txt, 1_044.txt, 1_045.txt, 1_046.txt, 1_047.txt, 1_048.txt, 1_049.txt, 1_050.txt, 1_051.txt, 1_052.txt, 1_053.txt, 1_054.txt, 1_055.txt, 1_056.txt, 1_057.txt, 1_058.txt, 1_059.txt, 1_060.txt, 1_061.txt, 1_062.txt, 1_063.txt, 1_064.txt, 1_065.txt, 1_066.txt, 1_067.txt, 1_068.txt, 1_069.txt, 1_070.txt, 1_071.txt, 1_072.txt, 1_073.txt, 1_074.txt, 1_075.txt, 1_076.txt, 1_077.txt, 1_078.txt, 1_079.txt, 1_080.txt, 1_081.txt, 1_082.txt, 1_083.txt, 1_084.txt, 1_085.txt, 1_086.txt, 1_087.txt, 1_088.txt, 1_089.txt, 1_090.txt, 1_091.txt, 1_092.txt, 1_093.txt, 1_094.txt, 1_095.txt, 1_096.txt, 1_097.txt, 1_098.txt, 1_099.txt, 1_100.txt, 1_101.txt, 1_102.txt, 1_103.txt, 1_104.txt, 1_105.txt, 1_106.txt, 1_107.txt, 1_108.txt, 1_109.txt, 1_110.txt, 1_111.txt, 1_112.txt, 1_113.txt, 1_114.txt, 1_115.txt, 1_116.txt
Case Name Status Exec Time Memory
0_000.txt AC 2 ms 2688 KB
0_001.txt AC 2 ms 2688 KB
0_002.txt AC 2 ms 2688 KB
0_003.txt AC 2 ms 2688 KB
1_003.txt AC 2 ms 2688 KB
1_004.txt AC 2 ms 2688 KB
1_005.txt AC 2 ms 2688 KB
1_006.txt AC 2 ms 2688 KB
1_007.txt AC 2 ms 2688 KB
1_008.txt AC 2 ms 2688 KB
1_009.txt AC 2 ms 2688 KB
1_010.txt AC 2 ms 2688 KB
1_011.txt AC 2 ms 2688 KB
1_012.txt AC 2 ms 2688 KB
1_013.txt AC 2 ms 2688 KB
1_014.txt AC 2 ms 2688 KB
1_015.txt AC 2 ms 2688 KB
1_016.txt AC 2 ms 2688 KB
1_017.txt AC 2 ms 2688 KB
1_018.txt AC 2 ms 2688 KB
1_019.txt AC 2 ms 2688 KB
1_020.txt AC 2 ms 2688 KB
1_021.txt AC 2 ms 2688 KB
1_022.txt AC 2 ms 2688 KB
1_023.txt AC 2 ms 2688 KB
1_024.txt AC 2 ms 2688 KB
1_025.txt AC 2 ms 2688 KB
1_026.txt AC 2 ms 2688 KB
1_027.txt AC 2 ms 2688 KB
1_028.txt AC 2 ms 2688 KB
1_029.txt AC 2 ms 2688 KB
1_030.txt AC 2 ms 2688 KB
1_031.txt AC 2 ms 2688 KB
1_032.txt AC 2 ms 2688 KB
1_033.txt AC 2 ms 2688 KB
1_034.txt AC 2 ms 2688 KB
1_035.txt AC 2 ms 2688 KB
1_036.txt AC 2 ms 2688 KB
1_037.txt AC 2 ms 2688 KB
1_038.txt AC 2 ms 2688 KB
1_039.txt AC 2 ms 2688 KB
1_040.txt AC 2 ms 2688 KB
1_041.txt AC 2 ms 2688 KB
1_042.txt AC 2 ms 2688 KB
1_043.txt AC 2 ms 2688 KB
1_044.txt AC 2 ms 2688 KB
1_045.txt AC 15 ms 6528 KB
1_046.txt AC 19 ms 8192 KB
1_047.txt AC 24 ms 6144 KB
1_048.txt AC 24 ms 7296 KB
1_049.txt AC 30 ms 11776 KB
1_050.txt AC 26 ms 9600 KB
1_051.txt AC 18 ms 6008 KB
1_052.txt AC 6 ms 3456 KB
1_053.txt AC 17 ms 6008 KB
1_054.txt AC 9 ms 4092 KB
1_055.txt AC 18 ms 5880 KB
1_056.txt AC 11 ms 4604 KB
1_057.txt AC 3 ms 2816 KB
1_058.txt AC 19 ms 6528 KB
1_059.txt AC 10 ms 3840 KB
1_060.txt AC 23 ms 6528 KB
1_061.txt AC 32 ms 9088 KB
1_062.txt AC 18 ms 6400 KB
1_063.txt AC 20 ms 5888 KB
1_064.txt AC 14 ms 4864 KB
1_065.txt AC 3 ms 2816 KB
1_066.txt AC 22 ms 6012 KB
1_067.txt AC 7 ms 3584 KB
1_068.txt AC 16 ms 5376 KB
1_069.txt AC 11 ms 3968 KB
1_070.txt AC 18 ms 5120 KB
1_071.txt AC 23 ms 5632 KB
1_072.txt AC 16 ms 4736 KB
1_073.txt AC 5 ms 3072 KB
1_074.txt AC 4 ms 2944 KB
1_075.txt AC 16 ms 4864 KB
1_076.txt AC 36 ms 7680 KB
1_077.txt AC 21 ms 5632 KB
1_078.txt AC 10 ms 3840 KB
1_079.txt AC 16 ms 4864 KB
1_080.txt AC 18 ms 5120 KB
1_081.txt AC 44 ms 12032 KB
1_082.txt AC 43 ms 14592 KB
1_083.txt AC 25 ms 6272 KB
1_084.txt AC 31 ms 9216 KB
1_085.txt AC 43 ms 15616 KB
1_086.txt AC 43 ms 14720 KB
1_087.txt AC 23 ms 7032 KB
1_088.txt AC 24 ms 7032 KB
1_089.txt AC 20 ms 6648 KB
1_090.txt AC 22 ms 7032 KB
1_091.txt AC 23 ms 7032 KB
1_092.txt AC 21 ms 6648 KB
1_093.txt AC 40 ms 10112 KB
1_094.txt AC 40 ms 11648 KB
1_095.txt AC 25 ms 6272 KB
1_096.txt AC 31 ms 7552 KB
1_097.txt AC 40 ms 11392 KB
1_098.txt AC 39 ms 11136 KB
1_099.txt AC 31 ms 8060 KB
1_100.txt AC 32 ms 8060 KB
1_101.txt AC 23 ms 6396 KB
1_102.txt AC 26 ms 6780 KB
1_103.txt AC 31 ms 8060 KB
1_104.txt AC 30 ms 8060 KB
1_105.txt AC 37 ms 7808 KB
1_106.txt AC 38 ms 7808 KB
1_107.txt AC 26 ms 6272 KB
1_108.txt AC 30 ms 6656 KB
1_109.txt AC 37 ms 7808 KB
1_110.txt AC 36 ms 7936 KB
1_111.txt AC 37 ms 7808 KB
1_112.txt AC 37 ms 7808 KB
1_113.txt AC 25 ms 6272 KB
1_114.txt AC 30 ms 6656 KB
1_115.txt AC 37 ms 7808 KB
1_116.txt AC 36 ms 7808 KB