关注
#include <bits/stdc++.h>
using namespace std;
struct Node {
int r, g, b;
Node() {
r = g = b = 0;
}
};
unordered_map<long long, Node>mp;
string s;
vector<vector<int>>G;
Node a;
Node dfs(int start, int except_) {
long long mps = (long long)start * 100000 + except_;
if(mp.count(mps)) return mp[mps];
Node ans;
if(s[start] == 'r') ans.r++;
else if(s[start] == 'g')ans.g++;
else ans.b++;
for(auto &;i : G[start]) {
if(i == except_) continue;
auto res = dfs(i, start);
ans.r += res.r;
ans.g += res.g;
ans.b += res.b;
}
mp[mps] = ans;
auto temp = ans;
temp.r = a.r - ans.r;
temp.g = a.g - ans.g;
temp.b = a.b - ans.b;
mp[(long long)except_ * 100000 + start] = temp;
return ans;
}
int main() {
int n;
cin >> n;
cin >> s;
G = vector<vector<int>>(n);
for(int i = 0, u, v; i < n - 1; i++) {
cin >> u >> v;
G[u - 1].push_back(v - 1);
G[v - 1].push_back(u - 1);
}
for(int i = 0; i < n; i++) {
if(s[i] == 'r') a.r++;
else if(s[i] == 'g') a.g++;
else a.b++;
}
int ans = 0;
unordered_map<long long, bool>vis;
for(int i = 0; i < n; i++) {
for(auto &;j : G[i]) {
if(vis.count((long long)i * 100000 + j)) continue;
auto res = dfs(j, i);
if(res.r > 0 &;&; res.g > 0 &;&; res.b > 0) {
res.r = a.r - res.r;
res.g = a.g - res.g;
res.b = a.b - res.b;
if(res.r > 0 &;&; res.g > 0 &;&; res.b > 0) ans++;
}
vis[(long long)i * 100000 + j] = vis[(long long)j * 100000 + i] = true;
}
}
cout << ans << endl;
return 0;
}
查看原帖
1 1
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
10-16 15:02
重庆大学 C++ 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 职场中那些令人叹为观止的八卦 #
12009次浏览 156人参与
# 你找工作想离家近 or 离家远? #
8601次浏览 161人参与
# 小红书开奖了 #
19764次浏览 111人参与
# 我的职场社死时刻 #
9780次浏览 106人参与
# 如何拒绝/反向PUA #
83022次浏览 372人参与
# 你父母给过你哪些不靠谱的职场建议? #
8304次浏览 138人参与
# 百度秋招 #
45473次浏览 364人参与
# 秋招吐槽大会 #
47908次浏览 431人参与
# 哪些公司开始补录了 #
9715次浏览 119人参与
# 那些年,我收到的‘奇葩’回复 #
5584次浏览 59人参与
# 职场中对你有帮助的书 #
23449次浏览 213人参与
# 你秋招最后悔的选择 #
8428次浏览 69人参与
# 租房前辈的忠告 #
274457次浏览 7198人参与
# XX请雇我工作 #
7146次浏览 73人参与
# 秋招你经历过哪些无语的事 #
5425次浏览 60人参与
# 月薪多少能在一线城市生存 #
93222次浏览 677人参与
# 假如你的老板掉河里,你的工作能为他做什么 #
39913次浏览 402人参与
# 通信硬件知识分享 #
39341次浏览 527人参与
# 你觉得机械有必要实习吗 #
66814次浏览 481人参与
# 交通银行工作体验 #
21016次浏览 69人参与
# 中科曙光工作体验 #
5349次浏览 23人参与
# 秋招疯了,看什么都像offer #
8646次浏览 98人参与