hdu 5423 Rikka with Tree(深搜)
2015-08-31 09:38
267 查看
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=5423
解题思路:
看懂了题目,就是水题,看不懂,无从下手,就是难题。。。
显然一棵树是独特的当且仅当任意处于每一个深度的点数是"1 1 1 1 ... 1 1 x"。所以直接DFS一下求出每一个点到根的距离然后判断一下就好了 。
AC代码:
http://acm.hdu.edu.cn/showproblem.php?pid=5423
解题思路:
看懂了题目,就是水题,看不懂,无从下手,就是难题。。。
显然一棵树是独特的当且仅当任意处于每一个深度的点数是"1 1 1 1 ... 1 1 x"。所以直接DFS一下求出每一个点到根的距离然后判断一下就好了 。
AC代码:
#include <iostream> #include <cstdio> #include <cstring> #include <vector> using namespace std; const int N = 1005; vector<int> v ; int sum ; int cnt;//深度 void dfs(int u,int fa,int dep){ int l = v[u].size(); for(int i = 0; i < l; i++){ int x = v[u][i]; if(x == fa) continue; dfs(x,u,dep+1); } sum[dep]++; cnt = max(cnt,dep); } bool check(){ for(int i = 1; i < cnt; i++) if(sum[i] > 1) return false; return true; } int main(){ int n; while(~scanf("%d",&n)){ int x,y; for(int i = 1; i<=n; i++) v[i].clear(); for (int i = 1; i<n; i++){ scanf("%d%d",&x,&y); v[x].push_back(y); v[y].push_back(x); } memset(sum,0,sizeof(sum)); cnt = 0; dfs(1, 1, 1); if(check()) printf("YES\n"); else printf("NO\n"); } return 0; }
相关文章推荐
- 软件生命周期中的攻防博弈
- java并发容器分析
- 减少页面回流与重绘(Reflow & Repaint)
- 关于线程控制
- 微信公众平台开发之天气预报功能
- 2015-08-31 阅读摘要
- java学习基础泛型和其他对象
- 我不会死性不改
- 一款基于微客服的仿微信的聊天软件
- 火云开发课堂 - 《使用Cocos2d-x 开发3D游戏》系列 第九节:卡通渲染
- 视图解析器ViewResolver
- 简单比较C语言中的execl()函数与execlp()函数
- C的xml编程-libxml2(1) http://blog.sina.com.cn/s/blog_6a1837e90100ns2q.html
- Ubuntu14.04 vim+Ctags+Taglist
- ArcGIS4Android开发----空间查询
- 为什么程序员这么“钟情”于月黑风高夜
- Activity和Task的启动模式有哪些?
- STL源码剖析 [容器](十三)[stl_tree.h]
- 配置sshd_config中的PermitRootLogin设置root登录或者禁止root登录
- zookeeper3.4.5自动清理日志