nyoj 20 转换根节点
来源:互联网 发布:算法书籍 哪本好 编辑:程序博客网 时间:2024/06/05 08:22
思想:通过一个dfs,以递归的思想搜索当前建树节点的父节点,直到找到最后的根节点,每个过程中把父节点倒置,然后把根节点的父节点置为所要求的节点,然后根据当时所存的父节点,一个一个输出
#include <stdio.h>#include <string.h>#define MAX 100001int fa[MAX];//代表问题解,即从S到达第 i个城市必须经过的前一个城市void dfs(int cur){ int t=fa[cur]; if(t) //若到达叶节点,则终止递归,将路径上的子节点与父节点交换,保证cur为根(无父节点) { dfs(t); fa[t]=cur; }}int main(){ int M,N,S,a,b,i; scanf("%d",&M); while(M--) { scanf("%d%d",&N,&S); memset(fa,0,sizeof(fa)); for(i=1; i<N; i++) { scanf("%d%d",&a,&b); if(fa[b]==0) //若当前b无父节点,则使a为b父节点 { fa[b]=a; } else { dfs(a);//保证a无父节点 fa[a]=b;//使a的父节点为b } } dfs(S);//调整成以S为根的树 fa[S]=-1;//满足题目要求,省去特判 for(i=1; i<=N; i++) printf("%d ",fa[i]); printf("\n"); } return 0;}
0 0
- nyoj 20 转换根节点
- NYOJ 98 成绩转换
- NYOJ 98 成绩转换
- 数列转换(nyoj 109)
- nyoj 109 数列转换
- nyoj- 成绩转换
- 成绩转换 NYOJ 98
- NYOJ-成绩转换
- nyoj-551-成绩转换
- NYOJ 98 成绩转换
- nyoj成绩转换
- 【NYOJ】[98]成绩转换
- nyoj 109 数列转换
- nyoj 进制转换
- NYOJ 109数列转换
- NYOJ 109. 数列转换
- NYOJ 98 成绩转换 2013年8月20日
- jquery节点与js节点的转换
- 莫队算法模板
- JAVA从菜鸟【入门】到新手【实习】一一进度记录
- 操作系统题库自整理
- python学习之 发送邮件
- 用redis做一个简单的秒杀
- nyoj 20 转换根节点
- 上拉刷新,下拉加载2
- Collection(Collections.sort)中的Values排序问题-java
- Gym 100962G Green Day (构造无向图 -- 找规律)
- JSON的一些简单运用
- UGUI研究院之判断鼠标或者手指是否点击在UI上
- struts2请求的执行顺序
- 博客迁移<a>jiangweili.me</a>
- 国家集训队论文分类整理