【zzulioj 1900 985的“树”难题】
发布日期:2021-11-04 12:59:27
浏览次数:9
分类:技术文章
本文共 1569 字,大约阅读时间需要 5 分钟。
1900: 985的“树”难题
Description
985给你一棵“树”以及它的根节点,要求你先判定它是否是一棵树,其次他想知道每个节点的“太子”数目以及它的父亲(root的话输出自己)。
“太子判定条件”: 一、若x是y的孩子节点,那么x是y的“太子”; 二、若x是y的“太子”且y是z的“太子”,那么x是z的“太子”。 Input第一行输入一个整数t,代表有t组测试数据。
每组数据第一行输入两个整数n,root分别代表树的节点数目以及根节点的编号。 接下来n-1行,每行输出两个整数u,v代表u节点和v节点之间有一条树边。 注:1 <= t <= 20,1 <= n <= 1e4,1 <= root <= n,1 <= u,v <= n。 Output对每一组数据,若给定的“树”不合法输出NO即可,反之输出YES,接下来输出占两行:
第一行输出n个整数代表每个节点的“太子”数目, 第二行输出n个整数代表每个节点的父亲节点编号。 输出顺序从1到n,每两个数之间有一个空格,最后一个数后面没有空格。 Sample Input2
3 1 1 2 2 3 2 1 1 1 Sample OutputYES
2 1 0 1 1 2 NO HINTSource
hpu
树裸题~~
#include#include #include using namespace std;struct node{ int from,to,next;}st[20022];int pa[10011],ma[10011],na[10011],vis[10011];int head[20022],num;bool kl; void add(int x,int y){ st[num].from=x; st[num].to=y; st[num].next=head[x]; head[x]=num++;}int find(int p){ while(p!=pa[p]) p=pa[p]; return p;}void DV(int x,int y){ int fx=find(x); int fy=find(y); if(fx!=fy)//判断是否有环 pa[fy]=fx; else kl=true;}void DFS(int pl){ int i; vis[pl]=1; for(i=head[pl];i!=-1;i=st[i].next) { int v=st[i].to; if(!vis[v]) { DFS(v); ma[pl]+=ma[v];//算出每个节点的太子数目 na[v]=pl;//记录每个节点的父亲节点 } }}int main(){ int T,N,M,i,a,b,ans; scanf("%d",&T); while(T--) { num=0;kl=false; memset(head,-1,sizeof(head)); for(i=1;i<=10011;i++)//初始化 { pa[i]=i; ma[i]=1; na[i]=i; vis[i]=0; } scanf("%d%d",&N,&M); for(i=1;i
转载地址:https://blog.csdn.net/WYK1823376647/article/details/52472266 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月03日 14时10分06秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【Leetcode刷题篇】leetcode210 课程表II
2019-04-26
【Leetcode刷题篇】leetcode207 课程表
2019-04-26
【Leetcode刷题篇】leetcode322 零钱兑换
2019-04-26
【Leetcode刷题篇】leetcode437 路径总和III
2019-04-26
【Leetcode刷题篇】leetcode416 分割等和子集
2019-04-26
【Leetcode刷题篇】leetcode31 下一个排列
2019-04-26
【Leetcode刷题篇】leetcode621 任务调度器
2019-04-26
【Leetcode刷题篇/面试篇】通俗易懂详解动态规划-背包问题详解
2019-04-26
【面试篇】HashMap1.7和HashMap1.8的详细区别对比
2019-04-26
【面试篇】ConcurrentHashMap1.8 扩容细节
2019-04-26
【面试篇】ConcurrentHashMap1.7和1.8详解对比
2019-04-26
HashMap的有关知识点大综述
2019-04-26
【面试篇】Java容器面试大集合
2019-04-26
【Linux篇】Linux常用命令之性能优化
2019-04-26
【Leetcode刷题篇】leetcode240 搜索二维矩阵II
2019-04-26
【Leetcode刷题篇】Leetcode714 买卖股票的最佳时机含手续费
2019-04-26
【Leetcode刷题篇】leetcode123 买卖股票的最佳时机 III
2019-04-26
【Leetcode刷题篇】leetcode188 买卖股票的最佳时机IV
2019-04-26
【Leetcode刷题篇/面试篇】经典动态规划-买卖股票问题总结汇总
2019-04-26
【Java锁体系】五、隐式锁和显式锁的区别(Synchronized和Lock的区别)
2019-04-26