Submission #2503794


Source Code Expand

#include<bits/stdc++.h>
using namespace std;
using Int = long long;

template<typename T>
vector<T> make_v(size_t a){return vector<T>(a);}

template<typename T,typename... Ts>
auto make_v(size_t a,Ts... ts){
  return vector<decltype(make_v<T>(ts...))>(a,make_v<T>(ts...));
}

template<typename T,typename V>
typename enable_if<is_class<T>::value==0>::type
fill_v(T &t,const V &v){t=v;}

template<typename T,typename V>
typename enable_if<is_class<T>::value!=0>::type
fill_v(T &t,const V &v){
  for(auto &e:t) fill_v(e,v);
}


template<typename T1,typename T2> inline void chmin(T1 &a,T2 b){if(a>b) a=b;}
template<typename T1,typename T2> inline void chmax(T1 &a,T2 b){if(a<b) a=b;}

//INSERT ABOVE HERE
signed main(){
  Int n;
  cin>>n;
  vector<vector<Int> > G(n);
  for(Int i=1;i<n;i++){
    Int x,y;
    cin>>x>>y;
    x--;y--;
    G[x].emplace_back(y);
    G[y].emplace_back(x);
  }
  string s;
  cin>>s;

  if(n==1){
    cout<<(s[0]=='W')<<endl;
    return 0;
  }

  Int ans=0,dec=0;
  auto dp=make_v<Int>(2,n);
  fill_v(dp,0);
  vector<Int> ok(n,0);
  vector<Int> cnt(n,0);
  
  function<void(Int, Int)> dfs=[&](Int v,Int p)->void{
    cnt[v]=(p!=-1);
    ok[v]=s[v]=='W';

    using P = pair<Int, Int>;
    vector<P> vp1,vp2;
    vp1.emplace_back(0,-1);
    vp2.emplace_back(0,-1);
    vp1.emplace_back(0,-1);
    vp2.emplace_back(0,-1);
    
    for(Int u:G[v]){
      if(u==p) continue;
      dfs(u,v);
      if(!ok[u]) continue;
      ok[v]=1;
      chmax(dp[0][v],dp[0][u]+(cnt[u]%2 != (s[u]=='W')));
      chmax(dp[1][v],dp[1][u]);
      vp1.emplace_back(dp[0][u]+(cnt[u]%2 != (s[u]=='W')),u);      
      vp2.emplace_back(dp[1][u],u);
      ans+=2;      
      cnt[v]++;      
    }    
    if(!ok[v]) return;
    //cout<<v<<":"<<dp[0][v]<<" "<<dp[1][v]<<endl;
    
    for(Int i=0;i<(Int)vp2.size();i++){
      if(vp2[i].second<0) continue;
      vp2[i].first+=(cnt[v]%2 != (s[v]=='W'));
    }
    
    dp[1][v]+=(cnt[v]%2 != (s[v]=='W'));
    if(cnt[v]%2 != (s[v]=='W')) ans++;
    //cout<<v<<":"<<cnt[v]<<" "<<s[v]<<":"<<(cnt[v]%2 != (s[v]=='W'))<<endl;
    
    sort(vp1.rbegin(),vp1.rend());
    sort(vp2.rbegin(),vp2.rend());

    //cout<<v<<":"<<vp1[0].first<<" "<<vp2[0].first<<endl;
    //cout<<v<<":"<<vp1[0].first+vp2[vp1[0].second==vp2[0].second].first<<endl;
    //cout<<v<<":"<<vp2[0].first+vp1[vp1[0].second==vp2[0].second].first<<endl;
    
    chmax(dec,vp1[0].first+vp2[vp1[0].second==vp2[0].second].first);
    chmax(dec,vp2[0].first+vp1[vp1[0].second==vp2[0].second].first);
  };

  Int r=-1;
  for(Int i=0;i<n;i++){
    if(s[i]=='B') continue;
    dfs(r=i,-1);
    break;
  }

  //cout<<ans<<endl;
  cout<<ans-dec*2<<endl;
  return 0;
}

Submission Info

Submission Time
Task F - Monochrome Cat
User beet
Language C++14 (GCC 5.4.1)
Score 800
Code Size 2780 Byte
Status AC
Exec Time 209 ms
Memory 38640 KB

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 256 KB
0_001.txt AC 1 ms 256 KB
0_002.txt AC 1 ms 256 KB
0_003.txt AC 2 ms 256 KB
1_003.txt AC 1 ms 256 KB
1_004.txt AC 1 ms 256 KB
1_005.txt AC 1 ms 256 KB
1_006.txt AC 2 ms 256 KB
1_007.txt AC 2 ms 256 KB
1_008.txt AC 1 ms 256 KB
1_009.txt AC 1 ms 256 KB
1_010.txt AC 2 ms 256 KB
1_011.txt AC 1 ms 256 KB
1_012.txt AC 1 ms 256 KB
1_013.txt AC 1 ms 256 KB
1_014.txt AC 2 ms 256 KB
1_015.txt AC 2 ms 256 KB
1_016.txt AC 2 ms 256 KB
1_017.txt AC 1 ms 256 KB
1_018.txt AC 1 ms 256 KB
1_019.txt AC 2 ms 256 KB
1_020.txt AC 2 ms 256 KB
1_021.txt AC 2 ms 256 KB
1_022.txt AC 2 ms 256 KB
1_023.txt AC 2 ms 256 KB
1_024.txt AC 1 ms 256 KB
1_025.txt AC 2 ms 256 KB
1_026.txt AC 2 ms 256 KB
1_027.txt AC 1 ms 256 KB
1_028.txt AC 2 ms 256 KB
1_029.txt AC 2 ms 256 KB
1_030.txt AC 2 ms 256 KB
1_031.txt AC 2 ms 256 KB
1_032.txt AC 2 ms 256 KB
1_033.txt AC 2 ms 256 KB
1_034.txt AC 2 ms 256 KB
1_035.txt AC 2 ms 256 KB
1_036.txt AC 2 ms 256 KB
1_037.txt AC 2 ms 256 KB
1_038.txt AC 2 ms 256 KB
1_039.txt AC 2 ms 256 KB
1_040.txt AC 2 ms 256 KB
1_041.txt AC 2 ms 256 KB
1_042.txt AC 2 ms 256 KB
1_043.txt AC 1 ms 256 KB
1_044.txt AC 2 ms 256 KB
1_045.txt AC 47 ms 11240 KB
1_046.txt AC 61 ms 16428 KB
1_047.txt AC 78 ms 8956 KB
1_048.txt AC 93 ms 22708 KB
1_049.txt AC 108 ms 27348 KB
1_050.txt AC 87 ms 19856 KB
1_051.txt AC 90 ms 10724 KB
1_052.txt AC 19 ms 2584 KB
1_053.txt AC 62 ms 8408 KB
1_054.txt AC 31 ms 3560 KB
1_055.txt AC 96 ms 10604 KB
1_056.txt AC 42 ms 4748 KB
1_057.txt AC 3 ms 512 KB
1_058.txt AC 57 ms 10648 KB
1_059.txt AC 28 ms 3564 KB
1_060.txt AC 84 ms 15416 KB
1_061.txt AC 110 ms 16892 KB
1_062.txt AC 55 ms 10016 KB
1_063.txt AC 71 ms 7076 KB
1_064.txt AC 50 ms 4908 KB
1_065.txt AC 5 ms 768 KB
1_066.txt AC 81 ms 7808 KB
1_067.txt AC 21 ms 2464 KB
1_068.txt AC 54 ms 5608 KB
1_069.txt AC 30 ms 2740 KB
1_070.txt AC 56 ms 4624 KB
1_071.txt AC 73 ms 8052 KB
1_072.txt AC 55 ms 5100 KB
1_073.txt AC 11 ms 1152 KB
1_074.txt AC 7 ms 768 KB
1_075.txt AC 50 ms 4272 KB
1_076.txt AC 134 ms 9480 KB
1_077.txt AC 67 ms 7816 KB
1_078.txt AC 30 ms 3096 KB
1_079.txt AC 51 ms 4276 KB
1_080.txt AC 53 ms 4744 KB
1_081.txt AC 179 ms 25072 KB
1_082.txt AC 209 ms 34800 KB
1_083.txt AC 85 ms 9072 KB
1_084.txt AC 133 ms 33520 KB
1_085.txt AC 176 ms 38640 KB
1_086.txt AC 166 ms 35312 KB
1_087.txt AC 135 ms 14308 KB
1_088.txt AC 119 ms 12772 KB
1_089.txt AC 81 ms 9828 KB
1_090.txt AC 94 ms 9828 KB
1_091.txt AC 120 ms 14308 KB
1_092.txt AC 77 ms 9828 KB
1_093.txt AC 136 ms 18672 KB
1_094.txt AC 142 ms 24304 KB
1_095.txt AC 81 ms 9584 KB
1_096.txt AC 116 ms 17648 KB
1_097.txt AC 142 ms 23664 KB
1_098.txt AC 135 ms 22384 KB
1_099.txt AC 122 ms 12520 KB
1_100.txt AC 114 ms 10984 KB
1_101.txt AC 82 ms 9576 KB
1_102.txt AC 113 ms 9576 KB
1_103.txt AC 121 ms 12520 KB
1_104.txt AC 133 ms 10728 KB
1_105.txt AC 124 ms 9712 KB
1_106.txt AC 117 ms 9584 KB
1_107.txt AC 82 ms 9584 KB
1_108.txt AC 106 ms 9712 KB
1_109.txt AC 127 ms 9712 KB
1_110.txt AC 122 ms 9712 KB
1_111.txt AC 139 ms 9712 KB
1_112.txt AC 138 ms 9712 KB
1_113.txt AC 81 ms 9584 KB
1_114.txt AC 108 ms 9712 KB
1_115.txt AC 134 ms 9584 KB
1_116.txt AC 132 ms 9712 KB