BZOJ4466 [Jsoi2013]超立方体
Description
定义“超立方图”为:有\(2^k\)个点,以\(k\)位二进制数编号,两个点之间有边当且仅当它们的编号恰有一位不同。给出一个图,问它是否与“超立方图”同构。如果是,输出任意一种点与点的对应方案。(\(n \leq 32768\))
Solution
先判断点数和边数、每个点的度数。
之后假设同构,求出同构方案后再check一遍。
显然超立方图的每个点都是对称的,于是我们任取一个点作为0,与它相邻的\(k\)个点编号为\(2^i, i=0\dots k-1\)。
之后,所有与\(0\)距离为\(2\)的点一定恰好与两个距离为\(1\)的点连边,且它的编号为这两个点编号的bit or。
与\(0\)距离为\(3\)的点的编号是所有与它相连的已知编号的点(距离一定是\(2\))的bit or。
以此类推。bfs一遍即可。
最后不要忘记check。
Code
#include <algorithm>
#include <cstdio>
#include <cstring>
const int N = 33000;
const int M = 2000050;
int pre[N], nxt[M], to[M], cnt, deg[N];
int A[N], que[N];
bool vis[N];
inline void addEdge(int x, int y) {
++deg[x];
nxt[cnt] = pre[x];
to[pre[x] = cnt++] = y;
}
int main() {
int T;
scanf("%d", &T);
while (T--) {
int n, m, x, y;
scanf("%d%d", &n, &m);
int k = 1;
while ((1 << k) < n) ++k;
memset(pre, -1, sizeof pre);
memset(deg, 0, sizeof deg);
cnt = 0;
while (m--) {
scanf("%d%d", &x, &y);
addEdge(x, y);
addEdge(y, x);
}
bool ok = true;
for (int i = 0; i < n; ++i)
ok = ok && deg[i] == k;
if (!ok) { puts("-1"); continue; }
memset(A, 0, sizeof A);
memset(vis, 0, sizeof vis);
int hd = 0, tl = 0;
vis[0] = true;
for (int i = pre[0], j = 1; ~i; i = nxt[i], j <<= 1)
A[que[tl++] = to[i]] = j;
while (hd < tl) {
int x = que[hd++];
vis[x] = true;
for (int i = pre[x]; ~i; i = nxt[i])
if (!vis[to[i]]) {
if (!A[to[i]]) que[tl++] = to[i];
A[to[i]] |= A[x];
}
}
memset(vis, 0, sizeof vis);
for (int i = 0; i < n; ++i) vis[A[i]] = true;
for (int i = 0; i < n; ++i) ok = ok && vis[i];
if (!ok) { puts("-1"); continue; }
for (int i = 0; i < n; ++i) {
for (int j = 0; j < k; ++j) vis[A[i] ^ (1 << j)] = false;
for (int j = pre[i]; ~j; j = nxt[j]) vis[A[to[j]]] = true;
for (int j = 0; j < k; ++j) ok = ok && vis[A[i] ^ (1 << j)];
}
if (!ok) { puts("-1"); continue; }
for (int i = 0; i < n; ++i)
printf("%d ", A[i]);
puts("");
}
}
BZOJ4466 [Jsoi2013]超立方体的更多相关文章
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- bzoj4466 超立方体
Description 超立方体是立方体在高维空间内的拓展(其在 2 维情况下退化为正方形,1维情况下退化成线段).在理论计算机科学领域里,超立方体往往可以和 2 进制编码联系到一起.对理论计算机科学 ...
- bzoj 4459: [Jsoi2013]丢番图 -- 数学
4459: [Jsoi2013]丢番图 Time Limit: 10 Sec Memory Limit: 64 MB Description 丢番图是亚历山大时期埃及著名的数学家.他是最早研究整数系 ...
- bzoj 4465: [Jsoi2013]游戏中的学问
4465: [Jsoi2013]游戏中的学问 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 121 Solved: 59[Submit][Statu ...
- [Bzoj5177][Jsoi2013]贪心的导游(主席树)
5177: [Jsoi2013]贪心的导游 Time Limit: 40 Sec Memory Limit: 512 MBSubmit: 32 Solved: 15[Submit][Status] ...
- BZOJ_4459_[Jsoi2013]丢番图_数学+分解质因数
BZOJ_4459_[Jsoi2013]丢番图_数学+分解质因数 Description 丢番图是亚历山大时期埃及著名的数学家.他是最早研究整数系数不定方程的数学家之一. 为了纪念他,这些方程一般被称 ...
- 「JSOI2013」贪心的导游
「JSOI2013」贪心的导游 传送门 多次询问区间内%一个数的最大值 我们不妨设这个数为M_sea 值域比较小所以考虑分块维护. 我们观察到对于给定的一个 \(p\) ,函数 \(y = x \% ...
- 「JSOI2013」哈利波特和死亡圣器
「JSOI2013」哈利波特和死亡圣器 传送门 首先二分,这没什么好说的. 然后就成了一个恒成立问题,就是说我们需要满足最坏情况下的需求. 那么显然在最坏情况下伏地魔是不会走回头路的 因为这显然是白给 ...
- 「JSOI2013」侦探jyy
「JSOI2013」侦探jyy 传送门 个人感觉我写的复杂度不够优秀啊,但是好像没有别的办法了... 我们枚举每个点,考虑这个点能不能不发生. 首先我们从这个点开始,在反图上面 \(\text{BFS ...
随机推荐
- cms的使用与总结
1,把cms中的basecms复制进Wamp里面的www文件夹, 2,打开Wamp,打开网址http://localhost/basecms/core/admin/admin.php(该网址默认端口为 ...
- Numpy学习50例
基础部分 1.导入numpy模块 import numpy as np 2.查看numpy版本信息 print(np.__version__) numpy的主要对象的多维数组Ndarray.Numpy ...
- C#获取获取北京时间多种方法
#region 获取网络时间 ///<summary> /// 获取中国国家授时中心网络服务器时间发布的当前时间 ///</summary> ///<returns> ...
- MySQl中的\g和\G
1. \g 在MySQL的sql语句后加上\g,效果等同于加上定界符,一般默认的定界符是分号; 2. \G 在MySQL的sql语句后加上\G,表示将查询结果进行按列打印,可以使每个字段打印到单独的行 ...
- 下拉菜单;手风琴;九宫格的Jquery的使用实例
下拉菜单;手风琴;九宫格的Jquery的使用实例 1.下拉菜单 效果如图: 代码如下: <!DOCTYPE html> <html lang="en"> & ...
- Maven-pom.xml文件报错 Plugin execution not covered by lifecycle configuration
问题: Eclipse中新导入的项目pom.xml文件报错: Plugin execution not covered by lifecycle configuration: org.jacoco:j ...
- WINDOWS 下 修改APACHE 并发数
某次,配置大型站点.日IP过2W. 刚解析完,就特别卡,每个页面都是慢吞吞的打开的. 至少30秒.但是,3389进入服务器很快,CPU 内存都是几乎为0. 想到WINDOWS下使用的是APACHE,并 ...
- 使用Topshelf部署Windows服务
新建一个控制台应用程序,使用Nuget安装TopShelf: nuget Install-Package Topshelf 测试代码: 在Main中输入: //FileInfo fi = new Fi ...
- start with connect by prior
start with connect by prior的使用: select … from tablename start with 条件1 connect by 条件2 where 条件3; sta ...
- Disconf 学习系列之Disconf 的模块架构图
不多说,直接上干货! Disconf 的模块架构主要包括: Disconf-Tools . Disconf-Web. Disconf-client 和 Disconf-Core. 每个模块的简单介 ...