hdu3926 Hand in Hand 同构图
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std; int pre[];
struct e{
int a, b;
};
e s1[];
e s2[]; int find(int x)
{
while (x != pre[x])
x = pre[x];
return x;
} int cmp(e a, e b){
if (a.a == b.a) return a.b>b.b;
else return a.a>b.a;
} void init(int n)
{
for (int i = ; i <= n; i++)
pre[i] = i;
} int main()
{
int t, cas = ;;
scanf("%d", &t);
while (t--)
{
for (int i = ; i<; i++)
{
s1[i].a = ; s1[i].b = ;
s2[i].a = ; s2[i].b = ;//最开始每个都是独立的,默认为链
}
bool flag = false;
int n1, m1, n2, m2; scanf("%d%d", &n1, &m1);
init(n1);
for (int i = ; i<m1; i++)
{
int a, b;
scanf("%d%d", &a, &b);
int dx = find(a);
int dy = find(b);
if (dx != dy)
{
pre[dx] = dy;
s1[dy].a += s1[dx].a;
s1[dx].a = ;//把拉手的孩子数量加起来,下同
}
else s1[dy].b = ;//否则在dy这个位置成环
} scanf("%d%d", &n2, &m2);
init(n2);
for (int i = ; i<m2; i++)
{
int a, b;
scanf("%d%d", &a, &b);
int dx = find(a);
int dy = find(b);
if (dx != dy)
{
pre[dx] = dy;
s2[dy].a += s2[dx].a;
s2[dx].a = ;
}
else s2[dy].b = ;
}
if (n1 == n2){ sort(s1 + , s1 + n1 + , cmp);
sort(s2 + , s2 + n2 + , cmp);//排序,若孩子的数量相同则对是否是环进行排序,这里要注意 for (int i = ; i<n1; i++)
if (s1[i].a != s2[i].a || s1[i].b != s2[i].b) {//判断数量,状态
flag = true;
break;
}
}
if (n1 != n2) flag = true; if (flag)
printf("Case #%d: NO\n", cas++);
else
printf("Case #%d: YES\n", cas++);
}
return ;
}
hdu3926 Hand in Hand 同构图的更多相关文章
- hdu 3926 Hand in Hand 同构图
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3926 In order to get rid of Conan, Kaitou KID disguis ...
- 2019牛客暑期多校训练营(第六场)E 构造、原图是补图的同构图
https://ac.nowcoder.com/acm/contest/886#question 题意 问是否存在某个n个点的无向图G是其补图H的同构图,若存在输出G的邻接矩阵以及H关于G的映射. ...
- 同构图+思维构造——牛客多校第六场E
考的其实是同构图的性质: 1.同构图的顶点数,边数相等 2.同构图通过点的映射后邻接矩阵相同 这篇博客讲的很好https://www.jianshu.com/p/c33b5d1b4cd9 本题还需要一 ...
- hdu3926(判断两个图是否相似,模版)
题意:给你2个图,最大度为2.问两个图是否相似. 思路:图中有环.有链,判断环的个数以及每个环组成的人数,还有链的个数以及每个链组成的人数 是否相等即可. 如果形成了环,那么每形成一个环,结点数就会多 ...
- hdu3926 Hand in Hand 判断同构
因为每个人小朋友只有两只手,所以每个点最多只有2度.图有可能是环.链,以及环和链构成的复杂图. 如何判断两幅图是否相似呢?判断相似是判断两幅图的圈的数量,以及构成圈的点数是否相同.还有判断链的数目和构 ...
- 【转】并查集&MST题集
转自:http://blog.csdn.net/shahdza/article/details/7779230 [HDU]1213 How Many Tables 基础并查集★1272 小希的迷宫 基 ...
- 【转载】图论 500题——主要为hdu/poj/zoj
转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...
- hdu 3926 hands in hands
https://vjudge.net/problem/HDU-3926 题意:有n个小朋友,他们之间手拉手,但是一只手只能拉一只手或者不拉,现在给出两个图,表示拉手关系,问这两个图是否同构.思路:一开 ...
- 【HDOJ图论题集】【转】
=============================以下是最小生成树+并查集====================================== [HDU] How Many Table ...
随机推荐
- 判断IPv6地址合法性
在 <netinet/in.h> 头文件下有下列这些宏用于判断IPv6地址合法性 返回0代表true,返回非零值代表ipv6地址为非指定类型的的地址(false) int IN6_IS_A ...
- block-循环引用
在ARC机制下,app的内存管理由操作系统进行管理,不须要程序猿手动的管理内存,方便了开发.虽然,自己主动释放内存非常方便.可是并不是绝对安全,绝对不会产生内存泄露. 大部分导致iOS对象无法按预期释 ...
- 2016/06/13 phpexcel 未完待续
①准备工作: 1,php版本不能太低 2,去官网下载PHPExcel插件 http://phpexcel.codeplex.com/ 3,解压后提取classes文件夹到工作目录,并重命名为PH ...
- group by where having 联合使用
having子句与where有相似之处但也有区别,都是设定条件的语句.在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先执行.而where子句在查询过程中执行优 ...
- 使用Apache Ant合并多个jar
Apache Ant下载地址 下载解压后进入bin目录,并在此目录打开cmd 在cmd中运行ant,运行结果为: Buildfile: build.xml does not exist! Build ...
- 使用Microsoft Office 2007将文档转换为PDF
点击帮助 输入关键词PDF后搜索 点击进入Save or convert to PDF or XPS 点击进入2007 Microsoft Office Add-in: Microsoft Save ...
- jsp 中 jstl c:if等标签失效问题
<c:if test="${page == 1}"> ${s.index+1} </c:if> <c:if test="${page > ...
- D. Babaei and Birthday Cake--- Codeforces Round #343 (Div. 2)
D. Babaei and Birthday Cake time limit per test 2 seconds memory limit per test 256 megabytes input ...
- kbmMW 5.0.1发布了(跨全平台,包括Linux,可使用Win的高性能HTTPSys传输层,等等)
kbmMW5如期发布,作者增加了很多重磅功能,以下翻译作者的发布文件:1.支持Delphi 10.2 Tokyo,包括Linux支持(测试版)2.大量的新功能与改进3.新的智能服务(Smart ser ...
- httpd2.4.27rpm包制作
http2.4.27 rpm包制作1.安装rpm-buildyum -y install rpm-build2.使用普通用户创建spec规则文件su - lxhvim httpd.spec Name: ...