HDU 5432 Rikka with Tree (BestCoder Round #53 (div.2))
http://acm.hdu.edu.cn/showproblem.php?pid=5423
题目大意:给你一个树 判断这棵树是否是独特的
一颗树是独特的条件:不存在一颗和它本身不同但相似的树
两颗树相似条件:两颗树中点的数量相等且相对应的点的深度相同
如第2个样例
4
1 2
2 3
1 4
与
4
1 2
1 4
3 4
如图:这两棵树的点的数量相等且相应的点的深度deep相同,所以这两棵树相似,所以样例2存在一颗树与它不同但相似,即不特殊
运用广搜统计每个点的深度
要想一颗树特殊,只有保证他的分支下面不再有子节点
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define N 1010 using namespace std; struct Edge
{
int u, v, cnt, next;
}edge[N * N]; int head[N], j, cnt;
int a[N];//记录各个点的深度
bool vis[N]; void Add(int u, int v)//邻接表
{
edge[cnt].u = u;
edge[cnt].v = v;
edge[cnt].next = head[u];
head[u] = cnt++;
} void Init()
{
memset(head, -, sizeof(head));
memset(a, , sizeof(a));
memset(vis, false, sizeof(vis));
cnt = j = ;
} void DFS(int u, int deep)
{
int v, i;
vis[u] = true;
for(i = head[u]; i != - ; i = edge[i].next)
{
v = edge[i].v;
if(!vis[v])
{
vis[v] = true;
DFS(v, deep + );
}
}
a[j++] = deep;
return ;
}//查找记录各个点的深度 int cmp(const void *a, const void *b)
{
return *(int *)a - *(int *)b;
} int main()
{
int n, u, v;
while(~scanf("%d", &n))
{
Init();
for(int i = ; i < n ; i++)
{
scanf("%d%d", &u, &v);
Add(u, v);
Add(v, u);
}
DFS(, );
qsort(a, j, sizeof(a[]), cmp);
int deep = , f = , fl = ;
for(int i = ; i < j ; i++)
{
if(a[i - ] == a[i])
{
fl = ;//如果两个点的深度相同,就存在分支,即标记有分支
deep = a[i];
}
if(fl == && a[i] > deep)
f = ;//如果存在分支且分支的下面还有节点则输出NO
}
if(f == )
printf("YES\n");
else
printf("NO\n");
}
return ;
}
HDU 5432 Rikka with Tree (BestCoder Round #53 (div.2))的更多相关文章
- hdu 5424 Rikka with Graph II (BestCoder Round #53 (div.2))(哈密顿通路判断)
http://acm.hdu.edu.cn/showproblem.php?pid=5424 哈密顿通路:联通的图,访问每个顶点的路径且只访问一次 n个点n条边 n个顶点有n - 1条边,最后一条边的 ...
- 哈密顿图 BestCoder Round #53 (div.2) 1003 Rikka with Graph II
题目传送门 题意:判断是否为哈密顿图 分析:首先一种情况是不合法的:也就是度数为1的点超过2个:合法的有:,那么从度数为1的点开始深搜,如果存在一种走法能够走完n个点那么存在哈密顿路 收获:学习资料 ...
- BestCoder Round #53 (div.1)
Problem A: 题目大意: 给出以节点1为根的一棵树A,判断它是否是特殊的.一棵树是特殊的当且仅当不存在和它不完全相同的一棵树B,使得A中点i到点1的距离和B中相等. 题解: 假设一个点x的深度 ...
- hdu 5423 Rikka with Tree(dfs)
Problem Description As we know, Rikka is poor at math. Yuta is worrying about this situation, so he ...
- BestCoder Round #68 (div.2) tree(hdu 5606)
tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submis ...
- hdu 5636 搜索 BestCoder Round #74 (div.2)
Shortest Path Accepts: 40 Submissions: 610 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: ...
- BestCoder Round #69 (div.2) Baby Ming and Weight lifting(hdu 5610)
Baby Ming and Weight lifting Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K ( ...
- hdu5634 BestCoder Round #73 (div.1)
Rikka with Phi Accepts: 5 Submissions: 66 Time Limit: 16000/8000 MS (Java/Others) Memory Limit: ...
- hdu5631 BestCoder Round #73 (div.2)
Rikka with Graph Accepts: 123 Submissions: 525 Time Limit: 2000/1000 MS (Java/Others) Memory Lim ...
随机推荐
- XE4 IOS开发环境配置
l 配置IOS的安装开发环境 使用RAD XE4开发IOS程序,一台MAC是必须的(也可以用虚拟机), MAC上需要安装Xcode, 独立版本的Commnand Line Tools 以及RAD的pa ...
- sass 常用函数的整理
@charset "utf-8"; @import "compass/css3/inline-block"; @import "compass/css ...
- MVC项目中应用富文本编辑器UEditor中的几个坑
UEditor:百度出品 官网连接:http://ueditor.baidu.com/website/ 错误现象:在官网上复制到本地后,上传图片功能不能用, 控制台提示:“请求后台配置项http错误, ...
- sed总结
[-] 简介 调用方式 选项 命令集合 寻址方式 基本用法 文件操作 附加-插入-修改文本 删除文本 替换文本 转换文本 补充 ------------------------------------ ...
- MAC OSX 下安装 CTAGS
由于本子跟风换了骚货MBP,因而开发要迁移到MAC OSX下,mac os 下的ctags不一样,所以需要自己编译一个 Lion内置了ctags,但是不我所需要,因此得在网上去弄,最新的版本是 5 ...
- MYSQL BENCHMARK函数的使用
MYSQL BENCHMARK函数是最重要的函数之一,下文对该函数的使用进行了详尽的分析,如果您对此感兴趣的话,不妨一看. 下文为您介绍的是MYSQL BENCHMARK函数的语法,及一些MYSQL ...
- hdu 2167(状态压缩基础题)
题意:给你一个矩阵,让你在矩阵中找一些元素使它们加起来和最大,但是当你使用某一个元素时,那么这个元素周围的其它八个元素都不能取! 分析:这是一道比较基础的状态压缩题,也是我做的第三道状态压缩的题,但是 ...
- webtest 文章
一直也没有和游戏类测试打过交道,看到“腾讯WeTest ”提供的测试服务,以及和手机游戏相关的技术文章.在此作个备份记录的. 手游专题 http://wetest.qq.com/lab/tag/?ta ...
- 猎豹使用AI RoboForm填表
最近,Chrome同步书签好慢,另外因为工作的原因,chrome还是用来做工作的事情,自己的事情准备换到猎豹,但是一个重要的问题是强大的自动填表工具AI RoboForm没有整合到猎豹的地方: 搜索了 ...
- Asp.Net 自定义控件实现图片的上传,浏览,删除功能
4月的时候公司比较闲,就想着自己做点东西,其实主要是为了更加熟悉.Net,毕竟接触的时间不长,趁着有时间想提高提高.不过当我做到图片上传这个功能的时候,就有些停滞不前了,连续写了两天也达不到自己想要的 ...