#include <bits/stdc++.h>
using namespace std; void solve() {
int T;
cin >> T;
while (T--) {
int n;
cin >> n;
vector<vector<int>> tree(n + 1);
for (int i = 0; i < n - 1; ++i) {
int x, y;
cin >> x >> y;
tree[x].push_back(y);
}
vector<int> a(n + 1);
for (int i = 1; i <= n; ++i) {
cin >> a[i];
} bool is_palindrome_tree = true;
vector<pair<int, unordered_map<int, int>>> stack;
stack.emplace_back(1, unordered_map<int, int>()); while (!stack.empty() && is_palindrome_tree) {
auto [node, freq] = stack.back();
stack.pop_back();
unordered_map<int, int> new_freq = freq;
new_freq[a[node]]++; if (tree[node].empty()) {
int odd_count = 0;
for (const auto& [key, val] : new_freq) {
if (val % 2 != 0) {
odd_count++;
if (odd_count > 1) {
break;
}
}
}
if (odd_count > 1) {
is_palindrome_tree = false;
}
} else {
for (int child : tree[node]) {
stack.emplace_back(child, new_freq);
}
}
}
cout << (is_palindrome_tree ? "Yes" : "No") << endl;
}
} int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
solve();
return 0;
}

T621307's std的更多相关文章

  1. 【NX二次开发】NX内部函数,libuifw.dll文件中的内部函数

    本文分为两部分:"带参数的函数"和 "带修饰的函数". 浏览这篇博客前请先阅读: [NX二次开发]NX内部函数,查找内部函数的方法 带参数的函数: void U ...

  2. C++ std::set

    std::set template < class T, // set::key_type/value_type class Compare = less<T>, // set::k ...

  3. C++ std::priority_queue

    std::priority_queue template <class T, class Container = vector<T>, class Compare = less< ...

  4. C++ std::queue

    std::queue template <class T, class Container = deque<T> > class queue; FIFO queue queue ...

  5. C++ std::multimap

    std::multimap template < class Key, // multimap::key_type class T, // multimap::mapped_type class ...

  6. C++ std::map

    std::map template < class Key, // map::key_type class T, // map::mapped_type class Compare = less ...

  7. C++ std::list

    std::list template < class T, class Alloc = allocator > class list; List Lists are sequence co ...

  8. C++ std::forward_list

    std::forward_list template < class T, class Alloc = allocator > class forward_list; Forward li ...

  9. C++ std::deque

    std::deque template < class T, class Alloc = allocator > class deque; Double ended queue deque ...

  10. C++ std::array

    std::array template < class T, size_t N > class array; Code Example #include <iostream> ...

随机推荐

  1. An internal error occurred during: "Polling news feeds". javax/xml/bind/JAXBContext

    WindowPerferences取消Enable automatic news polling的勾选

  2. lambdo表达式

    ************************************************************************* 原作者:ioriogami 原文:https://b ...

  3. 我的Vue之旅(4)

    2020-10-26 使用v-bind来绑定class属性主要是分成了两类,即对象语法与数组语法,其实在数组中也是可以混用对象语法的,但在Demo3中我没有 写出来,有兴趣的话可以自己试试.在HTML ...

  4. Spring AOP 面向切面编程之AOP是什么

    前言   软件工程有一个基本原则叫做"关注点分离"(Concern Separation),通俗的理解就是不同的问题交给不同的部分去解决,每部分专注于解决自己的问题.这年头互联网也 ...

  5. LLM 上下文长度详细介绍

    1.概述 在<Token:大语言模型的"语言乐高",一切智能的基石>与<LLM 输出配置 (LLM output configuration)>这两篇博文中 ...

  6. 关于PHP 函数性能优化的技巧

    本文由 ChatMoney团队出品 本文将详细介绍 PHP 函数性能优化的技巧.通过分析 PHP 函数的执行过程和性能瓶颈,提供一系列实用的优化方法,并结合代码示例,帮助读者提升 PHP 代码的执行效 ...

  7. 你应该懂的AI大模型(六)之 transformers

    一.Transformer与transformers 结论:Transformer是模型架构,transfortmers是库. 问:为什么我们要知道Transformer与transformers呢? ...

  8. LinkedList链表

    LinkedList 他是继承的List 双向链表 每当我们new一个linklist对象的时候 LinkedList linkedList = new LinkedList(); 他会先创建一个Li ...

  9. SAP采购订单屏幕控制

    这里看交货计划的屏幕控制:交货计划增强,不可编辑 采购订单的程序是用类+屏幕写的. 所以直接看采购订单的程序:MEGUI 找到我们需要增强的屏幕,屏幕号1320 对应的类对象. BUILD_DYNPR ...

  10. 低版本.net ueditor结合cshtml getshell

    ueditor版本.net 1.3.x,不是.net 1.4.3的getshell 上传页面是这样的需要开启flash,添加照片抓包.先正常上传 改后缀提示不允许的文件类型 注意到fileNameFo ...