题解

因为博主退役了,所以题解咕掉了。先放个代码

CODE

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 2005;
int n, ps[MAXN], ans[MAXN], fir[MAXN], to[MAXN<<1], nxt[MAXN<<1], cntE, Mn;
int f[MAXN][MAXN<<1], cnt[MAXN]; bool bf[MAXN<<1], st[MAXN], ed[MAXN];
inline void link(int u, int v) {
to[++cntE] = v; nxt[cntE] = fir[u]; fir[u] = cntE;
to[++cntE] = u; nxt[cntE] = fir[v]; fir[v] = cntE;
}
int find(int u, int x) { return !f[u][x] ? x : f[u][x] = find(u, f[u][x]); }
void dfs(int u, int ff) {
if(ff && !f[u][ff] && !ed[u] && (find(u, 2*n+2) != ff || cnt[u] == 1)) Mn = min(Mn, u);
for(int i = fir[u]; i; i = nxt[i]) if(i^ff)
if( (!ff && !st[u] && !bf[i] && (find(u, i) != 2*n+3 || cnt[u] == 1))
|| (ff && !f[u][ff] && !bf[i] && find(u, i) != ff && (find(u, 2*n+2) != ff || find(u, i) != 2*n+3 || cnt[u] == 2)))
dfs(to[i], i^1);
}
bool mdf(int u, int ff) {
if(u == Mn) { f[u][ff] = 2*n+3, ed[u] = 1; return 1; }
for(int i = fir[u]; i; i = nxt[i]) if((i^ff) && mdf(to[i], i^1)) {
if(!ff) f[u][2*n+2] = i, st[u] = 1, bf[i] = 1;
else f[u][ff] = i, --cnt[u], bf[i] = 1;
return 1;
}
return 0;
}
int main(){
freopen("tree.in","r",stdin);
freopen("tree.out","w",stdout);
int T; scanf("%d", &T);
while(T--) {
memset(f, 0, sizeof f);
memset(bf, 0, sizeof bf);
memset(st, 0, sizeof st);
memset(ed, 0, sizeof ed);
memset(fir, 0, sizeof fir);
memset(cnt, 0, sizeof cnt);
cntE = 1;
scanf("%d",&n);
for(int i = 1; i <= n; ++i) scanf("%d", &ps[i]);
for(int i = 1, x, y; i < n; ++i) scanf("%d%d", &x, &y), ++cnt[x], ++cnt[y], link(x, y);
for(int i = 1; i <= n; ++i) Mn = n, dfs(ps[i], 0), mdf(ps[i], 0), ans[i] = Mn;
for(int i = 1; i <= n; ++i) printf("%d%c", ans[i], " \n"[i==n]);
}
}

最新文章

  1. 硬盘安装linux的两条命令
  2. 2017年1月1日 星期日 --出埃及记 Exodus 21:27
  3. 建立JDBC的环境配置和相关下载(Mac)
  4. 图片_ _Android有效解决加载大图片时内存溢出的问题 2
  5. bzoj 3270 博物馆(高斯消元)
  6. 前端复习-01-dom操作包括ie和现代浏览器处理相关
  7. ubuntu 下截图工具的使用
  8. 基于FPGA的OLED真彩色动态图像显示的实现
  9. 【踩坑速记】MIUI系统BUG,调用系统相机拍照可能会带给你的一系列坑,将拍照适配方案进行到底!
  10. 今天开始上Linux运维课。
  11. 小强的HTML5移动开发之路(7)——坦克大战游戏1
  12. Netty源码—三、select
  13. BZOJ bzoj1396 识别子串
  14. leetcode3:无重复字符的最长子串
  15. Promise in Chakra
  16. MySQL的事务处理及隔离级别
  17. MapReduce操作Hbase --table2file
  18. 作业MathExam
  19. Dubbo学习(五) Dubbo 从下载到编译成功
  20. xargs命令学习

热门文章

  1. 好用的idea插件
  2. SQL Server 数据库清空ldf日志文件
  3. 快速搭建ssh项目
  4. CentOS下使用yum安装Apache极为方便,只需要在终端键入以下命令即可
  5. STM32之复用功能
  6. 剑指offer22:从上往下打印出二叉树的每个节点,同层节点从左至右打印。
  7. firefox 获取xpath
  8. Java 总结篇1
  9. Yii2 redis 使用方法
  10. 关于Vue中,使用watch同时监听两个值的实现方法