【题目描述】
Tom和Jerry各有一个玩具,每个玩具都是由M根绳子连接到N个球上制成的。
在Tom的玩具中,球的编号为1,…,N,第i条绳子将球Ai和Bi连接起来。
类似地,在Jerry的玩具中,球编号为1,…,N,第i条绳子将连接到球Ci和球Di。
在每个玩具中,没有球把一条绳子的两端都系在自己身上,也没有两个球被两条或更多
不同的绳子系在一起。
Mike想知道这两个玩具的形状是否相同。
这里,当序列P满足以下条件时,它们被称为具有相同的形状。
• P是(1,…,N)的一个排列。
• 对于1和N(包括1和N)之间的每一对整数i和j,以下公式成立:Tom玩具中的球
i和球j用绳子系着,当且仅当Jerry玩具中的球Pi和球Pj用绳子系着。
如果两个玩具形状相同,请输出“Yes”;否则,请输出“No”。

【输入格式】
第一行有两个整数N和M(1≤N≤8;0≤M≤
∗(−1)
2
)。
接下来有M行,每行两个整数Ai和Bi ,表示Tom玩具上第i根绳子连接的两个球。
接下来还有M行,每行两个整数Ci和Di ,表示Jerry玩具上第i根绳子连接的两个球。

【输出格式】
如果Tom和Jerry的玩具形状相同,请输出“Yes”;否则,请输出“No”。

模拟题目信息,dfs枚举出全排列方案,满足要求则两图同构。

通过邻接矩阵判定:

 1 #include<bits/stdc++.h>
2 using namespace std;
3 const int N=9,M=2e5+10;
4 bool a[9][9],b[9][9];//邻接矩阵
5 bool st[9];//全排列的标记
6 int c[9];//记录全排列
7 int n,m,x,y;
8
9 bool dfs(int u){
10 if(u==n+1){
11 for(int i=1;i<=n;i++)
12 for(int j=1;j<=n;j++)
13 if(a[i][j]!=b[c[i]][c[j]]) return false;
14 return true;
15 }
16 for(int i=1;i<=n;i++){
17 if(!st[i]){//i未被选,可以选择i
18 st[i]=true;
19 c[u]=i;
20 if(dfs(u+1)) return true;
21 st[i]=false;//回溯取消标记
22 }
23 }
24 return false;//找不到一种合法全排列
25 }
26
27 int main(){
28 scanf("%d%d",&n,&m);
29 for(int i=1;i<=m;i++){
30 int x,y;
31 scanf("%d%d",&x,&y);
32 a[x][y]=a[y][x]=true;//有连边
33 }
34 for(int i=1;i<=m;i++){
35 int x,y;
36 scanf("%d%d",&x,&y);
37 b[x][y]=b[y][x]=1;
38 }
39 if(dfs(1)) puts("Yes\n");
40 else puts("No\n");
41 return 0;
42 }

220702 T1 玩具 (图的同构,全排列判定)的更多相关文章

  1. noip 2016 day1 T1玩具谜题

    题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业. 有一天, 这些玩具小人把小南的眼镜藏了起来. 小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外.如下图: 这时singer告诉 ...

  2. [Noip2017][Day 1][T1]玩具谜题(toy.cpp)

    题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业. 有一天, 这些玩具小人把小南的眼镜藏了起来. 小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外.如下图: 这时singer告诉 ...

  3. NOIP2016 DAY1 T1 玩具谜题

    题目描述 小南有一套可爱的玩具小人,它们各有不同的职业. 有一天,这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外.如下图: 这时 singer 告诉小 ...

  4. NOIP2016 酱油记

    2016.11.17 考试前最后一个周四.然而我仍旧蒟蒻... 2016.11.18 周五,上午自家开车跑到晋城,中午12点到宾馆.下午4点去机房试机,先写了个线性筛,结果c++报错!?重开机,写个a ...

  5. NOIP2016DAY1题解

    https://www.luogu.org/problem/lists?name=&orderitem=pid&tag=33%2C83 T1:玩具谜题 题解: 沙茶模拟 #includ ...

  6. noip2016 提高组

    T1 玩具谜题 题目传送门 这道题直接模拟就好了哇 233 #include<cstdio> #include<cstring> #include<algorithm&g ...

  7. c++:数据类型的推断type_traits

    //推断左值右值引用 void main() { int i(10);//i是左值 有内存实体 int &ri(i); int &&rri(i + 5);//右值引用 cout ...

  8. Noip2016 提高组 Day1

    T1 玩具迷题 直通 思路: 1.首先根据数据范围来看,储存小人的姓名开一个二维char数组即可(不会开爆) 2.然后看他给出的样例以及条件什么的,能够确定出 ①朝内向右,朝外向左均为+ ②朝内向左, ...

  9. NOIP提高真题整理(2011-2018)-标签

    加粗的后面应该会有相应的简单解析(如果没咕的话:)). 2011 day1 T1:铺地毯:逆着铺 T2:选择客栈:按颜色分类枚举+二分答案 T3:Mayan游戏:大模拟dfs+剪枝 day2 T1:计 ...

随机推荐

  1. Axure RP 8 实现 圆角文本框 圆角带筛选的下拉列表框 可自动显示滚动条

    刚开始用Axure 会发现 Axure 元件库并不是很齐全,很多元件需要自己想办法解决 或者去网上去找.其实个人建议网上有现成的元件可以就下载就不必花时间去折腾.除非你也想练练手,原型这种东西除非高保 ...

  2. Python 懂车帝口碑分爬虫

    本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! Python 懂车帝口碑分爬虫 需求 懂 ...

  3. Linux系列之重定向操作

    前言 I/O重定向允许我们将命令的输入和输出重定向到文件中,以及将多个命令连接到一起成为管道.本文就来介绍有关重定向的知识. 标准输入.输出.错误 输出包括两种类型: 程序的结果.被称为标准输出或者s ...

  4. JVM 系列(4)一看就懂的对象内存布局

    请点赞关注,你的支持对我意义重大. Hi,我是小彭.本文已收录到 GitHub · AndroidFamily 中.这里有 Android 进阶成长知识体系,有志同道合的朋友,关注公众号 [彭旭锐] ...

  5. PerfView专题 (第二篇):如何寻找 C# 中的 Heap堆内存泄漏

    一:背景 上一篇我们聊到了如何去找 热点函数,这一篇我们来看下当你的程序出现了 非托管内存泄漏 时如何去寻找可疑的代码源头,其实思路很简单,就是在 HeapAlloc 或者 VirtualAlloc ...

  6. LuoguP3690 【模板】Link Cut Tree (LCT)

    勉强算是结了个大坑吧或者才开始 #include <cstdio> #include <iostream> #include <cstring> #include ...

  7. Word 的页眉、页脚、页码分别是什么?怎么设置?

    页眉:在 Word 文档中,每个页面的顶部区域为页眉.常用于显示文档的附加信息,可以插入时间.图形.公司微标.文档标题.文件名或作者姓名等. 页脚:页脚与页眉的作用相同,都可以作为显示文档的附加信息, ...

  8. React报错之Invalid hook call

    正文从这开始~ 总览 导致"Invalid hook call. Hooks can only be called inside the body of a function compone ...

  9. 「学习笔记」字符串基础:Hash,KMP与Trie

    「学习笔记」字符串基础:Hash,KMP与Trie 点击查看目录 目录 「学习笔记」字符串基础:Hash,KMP与Trie Hash 算法 代码 KMP 算法 前置知识:\(\text{Border} ...

  10. [网鼎杯 2020 朱雀组]phpweb-1|反序列化

    1.打开界面之后界面一直在刷新,检查源代码也未发现提示信息,但是在检查中发现了两个隐藏的属性:func和p,抓包进行查看一下,结果如下: 2.对两个参数与返回值进行分析,我们使用dat时一般是这种格式 ...