<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Atcoder [ARC161C] Dyed by Majority (Odd Tree) 題解 [ 綠 ] [ 樹的遍歷 ] [ 構造 ] [ 貪心 ]

      Dyed by Majority (Odd Tree)

      想起來無聊,寫起來惡心。

      首先手模一下,發現葉子節點可以確定它父親的顏色。這啟示我們自底向上確定顏色

      因此考慮在已確定所有兒子的顏色時,確定自己的顏色,此時有兩種情況:

      • 兒子中兩種顏色出現次數相等:此時自己被染成什么顏色取決于父節點是什么顏色。因此可以直接求出父節點被涂成的顏色。
      • 兒子中兩種顏色出現次數不相等:此時自己父親的顏色不會影響自己的顏色。而為了盡可能滿足父節點的要求,因此可以將自己的顏色染為父節點的顏色。

      最后判斷構造是否合法即可。時間復雜度 \(O(n)\)

      #include <bits/stdc++.h>
      #define fi first
      #define se second
      #define eb(x) emplace_back(x)
      #define pb(x) push_back(x)
      #define lc(x) (tr[x].ls)
      #define rc(x) (tr[x].rs)
      using namespace std;
      typedef long long ll;
      typedef unsigned long long ull;
      typedef long double ldb;
      using pi = pair<int, int>;
      const int N = 200005;
      int n;
      bitset<N> col;
      int dp[N], tot[N][2], ans[N];
      vector<int> g[N];
      bool ilg = 0;
      void dfs(int u, int fa)
      {
          for(auto v : g[u])
          {
              if(v == fa) continue;
              dfs(v, u);
          }
          if(dp[u])
              tot[fa][ans[u]]++;
          else
          {
              ans[u] = col[fa];
              tot[fa][ans[u]]++;
          }
          if(tot[u][0] == tot[u][1])
          {
              int res = col[u];
              if(dp[fa] && ans[fa] != res) ilg = 1;
              dp[fa] = 1;
              ans[fa] = res;
          }
          else
          {
              if(col[u] == 0 && tot[u][0] < tot[u][1]) ilg = 1;
              if(col[u] == 1 && tot[u][0] > tot[u][1]) ilg = 1;
          }
      }
      void solve() 
      {
          cin >> n;
          for(int i = 0; i <= n; i++)
          {
              g[i].clear();
              dp[i] = tot[i][0] = tot[i][1] = 0;
          }
          for(int i = 1; i < n; i++)
          {
              int u, v;
              cin >> u >> v;
              g[u].push_back(v);
              g[v].push_back(u);
          }
          for(int i = 1; i <= n; i++)
          {
              char c;
              cin >> c;
              col[i] = (c == 'B');
          }
          ilg = 0;
          dfs(1, 0);
          if(ilg || dp[0])
          {
              cout << "-1\n";
              return;
          }
          for(int i = 1; i <= n; i++)
          {
              if(ans[i]) cout << 'B';
              else cout << 'W';
          }
          cout << "\n";
      }
      int main()
      {
          //freopen("sample.in", "r", stdin);
          //freopen("sample.out", "w", stdout);
          ios::sync_with_stdio(0);
          cin.tie(0);
          cout.tie(0);
          int t;
          cin >> t;
          while(t--) solve();
          return 0;
      }
      
      posted @ 2025-11-04 22:01  KS_Fszha  閱讀(3)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产精品亚洲а∨天堂2021| 亚洲性人人天天夜夜摸18禁止| 伊人欧美在线| 无码人妻一区二区三区AV| 亚洲精品不卡无码福利在线观看| 国产91色在线精品三级| 99国产欧美另类久久久精品| 防城港市| 亚洲欧美日韩成人综合一区| 亚洲综合一区二区三区视频| 永久国产盗摄一区二区色欲| 亚洲香蕉网久久综合影视| 日韩成人一区二区二十六区| 欧美日韩中文字幕久久伊人| 久99久热精品免费视频| 久青草国产在视频在线观看| 国产成人亚洲日韩欧美| 亚洲国产日韩一区三区| 夜夜夜高潮夜夜爽夜夜爰爰| 久久天天躁夜夜躁狠狠ds005| 国产99视频精品免费视频76 | 国产成人午夜在线视频极速观看 | 久久精品国产一区二区三区| 精品一区二区免费不卡| 建水县| 99久久国产综合精品成人影院| 精品国产乱码一区二区三区| 国产一区二区三区不卡视频| 国产亚洲精品成人aa片新蒲金| 日本精品不卡一二三区| 国产精品理论片| 亚洲一区二区国产av| 神马视频| 少妇熟女久久综合网色欲| 国产成人亚洲精品成人区| 精品久久久久久无码免费 | 少妇人妻真实偷人精品| 日韩人妻少妇一区二区三区| 欧洲中文字幕一区二区| 熟女一区二区中文字幕| 精品国产综合成人亚洲区|