hdu 3926 Hand in Hand
http://acm.hdu.edu.cn/showproblem.php?pid=3926
这道题是判断两个图是不是同构相似。只要判断图中环的个数和链的个数,和每个环的节点数和链的节点数是否相等。
#include <cstdio>
#include <cstring>
#include <algorithm>
#define maxn 30000
using namespace std; int t,n1,m1,n2,m2;
int f[maxn],num[maxn];
int cicl[maxn];
struct node
{
int lis;
int cicl;
bool operator <(const node &a)const
{
return ((lis<a.lis)||(lis==a.lis&&cicl<a.cicl));
}
}p1[maxn],p2[maxn]; int find1(int x)
{
if(x==f[x]) return x;
return f[x]=find1(f[x]);
} void merge1(int a,int b)
{
int fa=find1(a);
int fb=find1(b);
if(fa==fb)
{
cicl[fa]=;
return;
}
num[fa]+=num[fb];
f[fb]=fa;
} void inti(int n)
{
for(int i=; i<=n; i++)
{
f[i]=i;
num[i]=;
}
memset(cicl,,sizeof(cicl));
} int main()
{
scanf("%d",&t);
for(int ca=; ca<=t; ca++)
{
scanf("%d%d",&n1,&m1);
inti(n1);
for(int i=; i<m1; i++)
{
int a,b;
scanf("%d%d",&a,&b);
merge1(a,b);
}
int cnt1=;
for(int i=; i<=n1; i++)
{
if(f[i]==i)
{
p1[cnt1].lis=num[i];
p1[cnt1++].cicl=cicl[i];
}
}
scanf("%d%d",&n2,&m2);
inti(n2);
int cnt2=;
for(int i=; i<m2; i++)
{
int a1,b1;
scanf("%d%d",&a1,&b1);
merge1(a1,b1);
}
for(int i=; i<=n2; i++)
{
if(f[i]==i)
{
p2[cnt2].lis=num[i];
p2[cnt2++].cicl=cicl[i];
}
}
//printf("....%d %d\n",cnt1,cnt2);
printf("Case #%d: ",ca);
if(n1!=n2)
{
printf("NO\n");
continue;
}
if(cnt1!=cnt2)
{
printf("NO\n");
continue;
}
bool flag=true;
sort(p1,p1+cnt1);
sort(p2,p2+cnt2);
for(int i=; i<cnt1; i++)
{
if(p1[i].lis!=p2[i].lis||(p1[i].cicl!=p2[i].cicl))
{
flag=false;
printf("NO\n");
break;
}
}
if(flag)
{
printf("YES\n");
}
}
return ;
}
hdu 3926 Hand in Hand的更多相关文章
- HDU 3926 并查集 图同构简单判断 STL
给出两个图,问你是不是同构的... 直接通过并查集建图,暴力用SET判断下子节点个数就行了. /** @Date : 2017-09-22 16:13:42 * @FileName: HDU 3926 ...
- HDU 3926 图的同构
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3926 题意:给定2个顶点度最大为2的无向图.问你这2个无向图是否同构. 思路: 1.最大度为2.说明这 ...
- hdu 3926 Hand in Hand 同构图
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3926 In order to get rid of Conan, Kaitou KID disguis ...
- hdu 3926 hands in hands
https://vjudge.net/problem/HDU-3926 题意:有n个小朋友,他们之间手拉手,但是一只手只能拉一只手或者不拉,现在给出两个图,表示拉手关系,问这两个图是否同构.思路:一开 ...
- 【转载】图论 500题——主要为hdu/poj/zoj
转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...
- hdu图论题目分类
=============================以下是最小生成树+并查集====================================== [HDU] 1213 How Many ...
- HDU图论题单
=============================以下是最小生成树+并查集====================================== [HDU] 1213 How Many ...
- HDOJ 2111. Saving HDU 贪心 结构体排序
Saving HDU Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 【HDU 3037】Saving Beans Lucas定理模板
http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...
随机推荐
- MySQL加锁分析
参考:MySQL 加锁处理分析.该文已经讲的很详尽了,也易懂,下面仅仅是个人做的总结. 一. 背景 1.1 隔离级别 1.2 加锁过程 逐条处理,逐条加锁. 1.3 两阶段锁2PL 1.4 gap锁 ...
- linux awk 使用
awk是linux下的一个命令,他对其他命令的输出,对文件的处理都十分强大,其实他更像一门编程语言,他可以自定义变量,有条件语句,有循环,有数组,有正则,有函数等.他读取输出,或者文件的方式是一行,一 ...
- Android_Studio 及SDK下载
Android Studio includes all the tools you need to build apps for Android. DOWNLOAD ANDROID STUDIO 2. ...
- android中创建模拟器的 SDCard
在eclipse中安装了android环境后,可以直接创建AVD和sdcard的,windows->Android Virtual Device Manager,创建一个AVD时,可以同时创建s ...
- JAX-WS 学习二:基于WEB容器,发布WebService
WebService 的发布通过调用 Endpoint.publish() 方法来启动一个java内嵌的WEB容器来实现的,如果要将WebService部署到一个WEB容器中去,需要使用jax-ws提 ...
- RCU 机制 [转IBM]
2005 年 7 月 01 日 本文详细地介绍了 Linux 2.6 内核中新的锁机制 RCU(Read-Copy Update) 的实现机制,使用要求与典型应用. 一.引言 众所周知,为了保护共享数 ...
- 计划任务中使用NT AUTHORITY\SYSTEM用户和普通管理员用户有什么差别
原文地址:http://www.ynufe.edu.cn/metc/Article/ShowArticle.asp?ArticleID=805 系统管理员会碰到这种问题,为什么在更改系统登录用户pas ...
- [R语言画图]气泡图symbols
绘制气泡图主要使用函数symbols(x,y,circle=r).当中x.y是坐标轴,r是每一个点的半径. x<-rnorm(10) y<-rnorm(10) r<-abs(rnor ...
- 解开Android应用程序组件Activity的"singleTask"之谜
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6714543 在Android应用程序中,可以配 ...
- Linux用户和用户组
用户分类 按位置分:本地账户.远程账户 按功能分:普通用户.超级用户(root) 普通用户: (1)系统用户:UID 1-499 (2)本地用户:UID 500+ 每一个用户,都有一个同名的用户组. ...