ustc 1117

无根树同构

有两种方法,一种是确定其中一棵树,另一棵树枚举根节点。

一种是,利用拓扑排序,先确定其中一棵树。另一棵树,若拓扑后剩两个节点,则枚举这两个节点为根结点,否则,只需做一次。注意,无根树节点入度应为1。

 1 #include <iostream>
2 #include <cstdio>
3 using namespace std;
4
5 const int N=1005;
6 const int leaf_hash=2099;
7 const int pt=9323;
8 const int qt=8719;
9
10 struct {
11 int u,v;
12 int next;
13 }edge[N];
14 int head[N];
15 bool vis[N];
16 int top,n,tot;
17
18 void addedge(int u,int v){
19 edge[tot].u=u;
20 edge[tot].v=v;
21 edge[tot].next=head[u];
22 head[u]=tot++;
23 }
24
25 int hash(int u){
26 vis[u]=true;
27 int sum=1; bool flag=false;
28 for(int i=head[u];i!=-1;i=edge[i].next){
29 int v=edge[i].v;
30 if(!vis[v]){
31 flag=true;
32 sum=sum*(pt^hash(v))%qt;
33 }
34 }
35 if(flag) return sum;
36 else return leaf_hash;
37 }
38
39 int main(){
40 int T,i,u,v; int A,B,a,b;
41 scanf("%d",&T);
42 while(T--){
43 scanf("%d",&n);
44 memset(head,-1,sizeof(head));
45 tot=0;
46 for(i=1;i<n;i++){
47 scanf("%d%d",&u,&v);
48 addedge(u,v);
49 addedge(v,u);
50 }
51 memset(vis,false,sizeof(vis));
52 A=hash(1);
53 memset(head,-1,sizeof(head));
54 tot=0;
55 for(i=1;i<n;i++){
56 scanf("%d%d",&u,&v);
57 addedge(u,v);
58 addedge(v,u);
59 }
60 for(i=1;i<=n;i++){
61 memset(vis,false,sizeof(vis));
62 B=hash(i);
63 if(A==B){
64 break;
65 }
66 }
67 if(i<=n) puts("same");
68 else puts("different");
69 }
70 return 0;
71 }

ustc 1117,布布扣,bubuko.com

时间: 2024-07-30 09:58:57

ustc 1117的相关文章

玲珑oj 1117 线段树+离线+离散化,laz大法

1117 - RE:从零开始的异世界生活 Time Limit:1s Memory Limit:256MByte Submissions:438Solved:68 DESCRIPTION 486到了异世界,看到了一群可爱的妹子比如蕾姆啊,艾米莉亚啊,拉姆啊,白鲸啊,怠惰啊等等!有一天膜女告诉486说她的能力可能不能再用了,因为膜女在思考一个数据结构题,没心情管486了.486说我来帮你做,膜女说你很棒棒哦! 给一个集合,最开始为空(不是数学上的集合)五个操作: 1.插入x2.把小于x的数变成x3

题目1117:整数奇偶排序 (2008年北京大学图形实验室计算机研究生机试真题)

题目描述: 输入10个整数,彼此以空格分隔.重新排序以后输出(也按空格分隔),要求:1.先输出其中的奇数,并按从大到小排列:2.然后输出其中的偶数,并按从小到大排列. 输入: 任意排序的10个整数(0-100),彼此以空格分隔. 输出: 可能有多组测试数据,对于每组数据,按照要求排序后输出,由空格分隔. 样例输入: 4 7 3 13 11 12 0 47 34 98 样例输出: 47 13 11 7 3 0 4 12 34 98 提示: 1. 测试数据可能有很多组,请使用while(cin>>

51Nod - 1117 聪明的木匠

51Nod - 1117 聪明的木匠 一位老木匠需要将一根长的木棒切成N段.每段的长度分别为L1,L2,......,LN(1 <= L1,L2,-,LN <= 1000,且均为整数)个长度单位.我们认为切割时仅在整数点处切且没有木材损失. 木匠发现,每一次切割花费的体力与该木棒的长度成正比,不妨设切割长度为1的木棒花费1单位体力.例如:若N=3,L1 = 3,L2 = 4,L3 = 5,则木棒原长为12,木匠可以有多种切法,如:先将12切成3+9.,花费12体力,再将9切成4+5,花费9体力

NEUOJ 1117: Ready to declare(单调队列)

1117: Ready to declare 时间限制: 1 Sec  内存限制: 128 MB 提交: 358  解决: 41 [提交][状态][讨论版] 题目描述 Finally, you find the most good-looking girl... You are going to write a letter to her. But you are not convident to be better than other boys. So you think you need

1117: 零起点学算法24——求正弦和余弦

1117: 零起点学算法24--求正弦和余弦 Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted: 3131  Accepted: 1485[Submit][Status][Web Board] Description 输入一个正整数n,输出n度的正弦.余弦函数值. Input 输入一个正整数(不大于10000)(多组数据) Output 分2行分别输出n度的正弦和余弦函数值,保留2位小数 Sample

最新eclipse国内镜像站,比ustc等站点资源新。

http://mirrors.neusoft.edu.cn/ 东软信息学院的镜像站,上面可以看到同步时间和状态很不错. 之前为了找最新的镜像站下载babel_language_packs r0.15.0 的语言包, http://download.eclipse.org 又打不开,就直接找了好多镜像站. 结果发现像什么 首都在线科技股份有限公司:http://mirrors.yun-idc.com/ 中国科学技术大学: http://mirrors.ustc.edu.cn/ (IPv4+IPv6

安装 jdk-8u121( jdk1.8 ) Eclipse jee neon java EE 4.6 并配置 中国科学技术大学 http://mirrors.ustc.edu.cn/eclipse/ 仓库源

官网太慢用百度网盘,打不开刷新几次试试 http://pan.baidu.com/s/1qYTUrGK#list/path=%2F 首先下载安装 jdk-8u121-windows-x64.exe (然后安装 eclipse-inst-win64.exe,eclipse的安装器,用来安装插件如JavaEE) 然后解压 eclipse neon4.6 for JavaEE x86_x64简体中文版.7z 然后打开解压文件中的eclipse.exe 点击帮助-->安装新软件-->可用软件站点 英文

中科大镜像http://mirrors.ustc.edu.cn正式面向全国用户开张

经过大半个星期的迁移和新脚本的测试,现在mirrors.ustc.edu.cn已经基本稳定了. 新机器的域名: IPv4/v6: mirrors.ustc.edu.cn (能解析出教育网/电信/v6地址) v4only: mirrors4.ustc.edu.cn (能解析出教育网/电信地址) v6only: mirrors6.ustc.edu.cn 有些地方(比如我测试的合肥长宽),DNS会解析出电信地址,但使用教育网地址访问更快,这时可以通过修改hosts指定强制使用教育网地址访问. 教育网i

题目1117:整数奇偶排序

题目描述: 输入10个整数,彼此以空格分隔.重新排序以后输出(也按空格分隔),要求: 1.先输出其中的奇数,并按从大到小排列: 2.然后输出其中的偶数,并按从小到大排列. 输入: 任意排序的10个整数(0-100),彼此以空格分隔. 输出: 可能有多组测试数据,对于每组数据,按照要求排序后输出,由空格分隔. 样例输入: 4 7 3 13 11 12 0 47 34 98 样例输出: 47 13 11 7 3 0 4 12 34 98 提示: 1. 测试数据可能有很多组,请使用while(cin>