首先我们可以确认 1的值一定是0

题目要求的是 有边的两个点所代表的值二进制有一位不同(即有边相连的两个值二进制所包含的1的个数相差为1)

所以我们通过他给你的图进行BFS 把原图分为一圈一圈的 并且先给每一个点赋一个初值

这样每一圈内的值二进制所包含的1的个数往外递增且同一圈内值二进制所包含的1的个数是相等的 目前我们就得到了题目的一个可行解

题目追加要求最小字典序 我们发现把这2^n个数二进制表示出来 则有n列 任意两列之间的交换是不会影响值二进制中1的个数且符合边关系的

即交换二进制中的任意两列不会影响答案的正确性

所以我们就可以通过排列这个二维数组的字典序来得到 答案的最小字典序

#include<bits/stdc++.h>
using namespace std; inline void splay(int &v)
{
v = ;
char c = ;
int p = ;
while (c < '' || c > '')
{
if (c == '-')
{
p = -;
}
c = getchar();
}
while (c >= '' && c <= '')
{
v = (v << ) + (v << ) + c - '';
c = getchar();
}
v *= p;
}
const int N = ;
int n, m, dp[N], q[N], fir[N], sz, to[], nxt[], vis[N], inque[N];
struct Q
{
bool s[N];
int id;
} f[];
void add(int x, int y)
{
nxt[++sz] = fir[x], fir[x] = sz, to[sz] = y;
}
bool cmp(Q a, Q b)
{
for (int i = ; i <= ( << n); i++)
{
if (a.s[i] != b.s[i])
{
return a.s[i] > b.s[i];
}
}
return true;
}
int main()
{
#ifdef CX_TEST
freopen("E:\\program--GG\\test_in.txt", "r", stdin);
#endif
int T;
cin >> T;
while (T--)
{
cin >> n >> m;
for (int i = ; i <= ( << n); i++)
{
inque[i] = vis[i] = fir[i] = dp[i] = ;
}
sz = ;
for (int i = , u, v; i <= m; i++)
{
splay(u), splay(v);
add(u, v), add(v, u);
}
for (int i = ; i <= ( << n); i++)
{
dp[i] = ;
}
int t = ;
vis[] = ;
int hd = , tl = ;
for (int u = fir[]; u; u = nxt[u])
{
dp[to[u]] = << (t++);
q[++tl] = to[u];
}
while (hd != tl)
{
int v = q[++hd];
vis[v] = ;
for (int u = fir[v]; u; u = nxt[u])
{
if (!vis[to[u]])
{
dp[to[u]] |= dp[v];
if (!inque[to[u]])
{
q[++tl] = to[u];
inque[to[u]] = ;
}
}
}
}
for (int i = ; i < n; i++)
{
f[i].id = i;
}
for (int i = ; i <= ( << n); i++)
{
for (int j = ; j < n; j++)
{
f[j].s[i] = dp[i] >> j & ;
}
}
sort(f, f + n, cmp);
for (int i = ; i <= ( << n); i++)
{
int ret = ;
for (int j = ; j < n; j++)
{
if (f[j].s[i])
{
ret |= ( << j);
}
}
printf("%d%c", ret, " \n"[i == ( << n)]);
}
}
}

牛客国庆集训派对Day5 A.璀璨光滑的更多相关文章

  1. 2019牛客国庆集训派对day5

    2019牛客国庆集训派对day5 I.Strange Prime 题意 \(P=1e10+19\),求\(\sum x[i] mod P = 0\)的方案数,其中\(0 \leq x[i] < ...

  2. 牛客国庆集训派对Day5 Solution

    A    璀璨光滑 留坑. B    电音之王 蒙特马利大数乘模运算 #include <bits/stdc++.h> using namespace std; typedef long ...

  3. 牛客国庆集训派对Day5 数论之神

    题目描述 终于活成了自己讨厌的样子. 这是她们都还没长大的时候发生的故事.那个时候,栗子米也不需要为了所谓的爱情苦恼. 她们可以在夏日的午后,花大把的时间去研究生活中一些琐碎而有趣的事情,比如数论. ...

  4. 牛客国庆集训派对Day6 A Birthday 费用流

    牛客国庆集训派对Day6 A Birthday:https://www.nowcoder.com/acm/contest/206/A 题意: 恬恬的生日临近了.宇扬给她准备了一个蛋糕. 正如往常一样, ...

  5. 牛客国庆集训派对Day1 L-New Game!(最短路)

    链接:https://www.nowcoder.com/acm/contest/201/L 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 1048576K,其他语言20 ...

  6. 牛客国庆集训派对Day4 J-寻找复读机

    链接:https://www.nowcoder.com/acm/contest/204/J 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 1048576K,其他语言20 ...

  7. 牛客国庆集训派对Day4 I-连通块计数(思维,组合数学)

    链接:https://www.nowcoder.com/acm/contest/204/I 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 1048576K,其他语言20 ...

  8. 牛客国庆集训派对Day1-C:Utawarerumono(数学)

    链接:https://www.nowcoder.com/acm/contest/201/C 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 1048576K,其他语言20 ...

  9. 牛客国庆集训派对Day2 Solution

    A    矩阵乘法 思路: 1° 牛客机器太快了,暴力能过. #include <bits/stdc++.h> using namespace std; #define N 5000 in ...

随机推荐

  1. Maven打包时出现无法下载org.apache.maven.plugins插件

    解决方式: 方式1:使用 mvn clean package -U 打包即可(注意:出于性能原因,Maven缓存插件无法下载的信息.根据您的设置,您可能需要通过将标志添加-U到命令行来清除此缓存,以使 ...

  2. iscsi脚本

    服务端 #!/bin/bash #测试主机是否可以联网 echo -e "\033[31m即将测试主机是否可以联网\033[0m" ping -c 4 www.baidu.com ...

  3. pandas 分组统计

    # coding:utf-8 import pandas as pd import numpy as np # path = r'C:\Users\wuzaipei\Desktop\桂林三金项目签到情 ...

  4. 【VS开发】进程线程及堆栈关系的总结

    进程线程及堆栈关系的总结 突然想到进程的栈和线程的栈,就顺便说一下,线程的栈被自动分配到进程的内存空间中 进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性. ...

  5. 完全理解js中的&&和||

    阅读代码时对一行代码很困惑 step > max_step && (step = min_step); 查阅资料后发现它等价于 if (step > max_step) { ...

  6. LCA模板(数剖实现)

    题目链接:https://www.luogu.org/problemnew/show/P3379 题意:LCA模板题. 思路:今天开始学树剖,先拿lca练练.树剖解lca,两次dfs复杂度均为O(n) ...

  7. Serialize and Deserialize N-ary Tree

    Serialization is the process of converting a data structure or object into a sequence of bits so tha ...

  8. NoSQL数据库简介与产生

    关系型数据库所存在“问题” >利用ACID原则(原子性,一致性,隔离性,持久性)保证数据完整性: >行列的规范化存储: >预定义结构: >存储数据量“小”: >结构化查询 ...

  9. jdbc简单使用

    1.代码 import java.sql.*; public class DBUtil { public static void main(String[] args) throws ClassNot ...

  10. windows terminal编译实录

    直接甩个大佬链接吧 https://www.bilibili.com/video/av52032233?t=835 安装过程中如果出问题了,靠搜索引擎解决下,微软或者vs的问题可以用biying搜索 ...