#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 同构图的更多相关文章

  1. hdu 3926 Hand in Hand 同构图

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3926 In order to get rid of Conan, Kaitou KID disguis ...

  2. 2019牛客暑期多校训练营(第六场)E 构造、原图是补图的同构图

    https://ac.nowcoder.com/acm/contest/886#question 题意  问是否存在某个n个点的无向图G是其补图H的同构图,若存在输出G的邻接矩阵以及H关于G的映射. ...

  3. 同构图+思维构造——牛客多校第六场E

    考的其实是同构图的性质: 1.同构图的顶点数,边数相等 2.同构图通过点的映射后邻接矩阵相同 这篇博客讲的很好https://www.jianshu.com/p/c33b5d1b4cd9 本题还需要一 ...

  4. hdu3926(判断两个图是否相似,模版)

    题意:给你2个图,最大度为2.问两个图是否相似. 思路:图中有环.有链,判断环的个数以及每个环组成的人数,还有链的个数以及每个链组成的人数 是否相等即可. 如果形成了环,那么每形成一个环,结点数就会多 ...

  5. hdu3926 Hand in Hand 判断同构

    因为每个人小朋友只有两只手,所以每个点最多只有2度.图有可能是环.链,以及环和链构成的复杂图. 如何判断两幅图是否相似呢?判断相似是判断两幅图的圈的数量,以及构成圈的点数是否相同.还有判断链的数目和构 ...

  6. 【转】并查集&MST题集

    转自:http://blog.csdn.net/shahdza/article/details/7779230 [HDU]1213 How Many Tables 基础并查集★1272 小希的迷宫 基 ...

  7. 【转载】图论 500题——主要为hdu/poj/zoj

    转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...

  8. hdu 3926 hands in hands

    https://vjudge.net/problem/HDU-3926 题意:有n个小朋友,他们之间手拉手,但是一只手只能拉一只手或者不拉,现在给出两个图,表示拉手关系,问这两个图是否同构.思路:一开 ...

  9. 【HDOJ图论题集】【转】

    =============================以下是最小生成树+并查集====================================== [HDU] How Many Table ...

随机推荐

  1. DirectX11 学习笔记5 - D3DXMath 库

    directx11 特别推出了一个数学库 用于向量 矩阵的计算.并且使用128位 同一时候计算4条32位数据 (SIMD) 之前基本是用的directx10math.h这个头文件.  这个数学库既然是 ...

  2. STM32W108无线传感器网络节点自组织与移动智能体导航技术

    使用STM32W108无线开发板及节点完毕大规模网络的自组建,网络模型选择树型,网络组建完毕之后,使用基于接收信号强度指示RSSI(ReceivedSignal Strength Indication ...

  3. fatal error C1083: 无法打开预编译头文件:“Debug\opencv.pch”: No such file or directory

    stdafx.cpp右键——属性,预编译头选“创建”,其它cpp选“使用”. 调试不能优化.

  4. Hadoop 中的 (side data) 边数据

    一.用途 边数据是作业所需的额外的只读数据,通常用来辅助主数据集: 二.方法 1.利用Configuration类来配置,利用setter()和getter()可方便的使用,方便存储一些基本的类型: ...

  5. 传统maven项目创建

    转自:https://blog.csdn.net/wangfengtong/article/details/77098238 需求表均同springmvc案例 此处只是使用maven 注意,以下所有需 ...

  6. js中获取时间new date()的用法 获取时间:

    获取时间: 1 var myDate = new Date();//获取系统当前时间 获取特定格式的时间: 1 myDate.getYear(); //获取当前年份(2位) 2 myDate.getF ...

  7. code::Blocks 汉化经验

    首先,在网上下载一个code::Block的汉化包 code::Block汉化包下载地址,复制到地址栏即可.  http://files.cnblogs.com/files/QW-lzm/codebl ...

  8. 应用程序启动器 “sublime_text.desktop“ 还没有被标记为 信任。如果您不知道这个文件的来源,那么启动它可能会不安全。解决sublime在ubuntu中不支持中文输入问题。

    1.下载 git clone https://github.com/lyfeyaj/sublime-text-imfix.git 2.进行一些处理 cd ~/sublime-text-imfix su ...

  9. hdu 1514 Free Candies 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1514 题目意思:有4堆糖果,每堆糖果有n个,从上到下排好,取糖果只能从上往下取,取完的糖果放在篮子里, ...

  10. 一步一步学Silverlight 2系列(29):使用Transform实现更炫的效果(上)

    概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...