传送门


\(r = 1\)直接判断所有点度数是否为偶数

考虑\(r = 2\)的情况。设\(x_i=0/1\)表示\(i\)点所在的集合,那么若\(2 \mid du_u\),则\(\bigoplus\limits_{(u,v) \in e} x_v = 0\),否则\(\bigoplus\limits_{(u,v) \in e} x_v = x_u \bigoplus 1\),即\(x_u\ \ xor\ \ \bigoplus\limits_{(u,v) \in e} x_v = 1\)。

可以发现上面是一个异或方程组,高斯消元解出来即可。

但是\(r\)有可能\(> 2\)吗?事实上\(r\)只会等于\(1\)或者\(2\)。

可以发现如果\(r>2\),意味着上面的异或方程组无解。无解则存在某些异或方程能够异或得到\(0=1\)。右式为\(1\)意味着有奇数个入度为奇数的点,而左式为\(0\)意味着所有点在这些异或方程中都出现了偶数次,而度数为奇数的点会在自己的方程中出现一次,所以在这个导出子图中,度数为奇数的点连接了奇数个点,度数为偶数的点连接了偶数个点,这意味着这个导出子图的度数和为奇数。但对于一个无向图度数无论如何都是偶数,所以不存在无解情况,所以\(r \leq 2\)。

#include<bits/stdc++.h>
using namespace std;inline int read(){int a = 0;char c = getchar();bool f = 0;while(!isdigit(c)){if(c == '-')f = 1;c = getchar();}while(isdigit(c)){a = (a << 3) + (a << 1) + (c ^ '0');c = getchar();}return f ? -a : a;
}const int MAXN = 2010;
bitset < MAXN > gauss[MAXN];
int N , M , ans[MAXN];int main(){for(int T = read() ; T ; --T){N = read();M = read();for(int i = 1 ; i <= N ; ++i){gauss[i].reset();gauss[i].set(i);}for(int i = 1 ; i <= M ; ++i){int a = read() , b = read();gauss[a][N + 1] = ~gauss[a][N + 1];gauss[b][N + 1] = ~gauss[b][N + 1];gauss[a][b] = gauss[b][a] = 1;}bool f = 1;for(int i = 1 ; f && i <= N ; ++i)f = !gauss[i][N + 1];if(f){puts("1");for(int i = 1 ; i <= N ; ++i)printf("1 ");}else{for(int i = 1 ; i <= N ; ++i)if(!gauss[i][N + 1])gauss[i][i] = 0;int now = 1;for(int i = 1 ; i <= N ; ++i){int j = now;while(j <= N && !gauss[j][i])++j;if(j > N){ans[i] = 0;for(int k = 1 ; k < now ; ++k)gauss[k][i] = 0;continue;}if(j != now)swap(gauss[j] , gauss[now]);while(++j <= N)if(gauss[j][i])gauss[j] ^= gauss[now];++now;}for(int j = now - 1 ; j ; --j){int p = 0;for(int k = 1 ; !p && k <= N ; ++k)if(gauss[j][k])p = k;ans[p] = gauss[j][N + 1];for(int k = j - 1 ; k ; --k)if(gauss[k][p])gauss[k] ^= gauss[j];}puts("2");for(int i = 1 ; i <= N ; ++i)printf("%d " , ans[i] + 1);}putchar('\n');}return 0;
}

转载于:https://www.cnblogs.com/Itst/p/10423837.html

CF1070L Odd Federalization 高斯消元相关推荐

  1. Rocksdb Ribbon Filter : 结合 XOR-filter 以及 高斯消元算法 实现的 高效filter

    文章目录 前言 XOR-filter 实现原理 xor filter 的构造原理 xor filter 构造总结 XOR-filter 和 ADD-filter对比 XOR-filter 在计算上的优 ...

  2. poj 1681 Painter#39;s Problem(高斯消元)

    http://poj.org/problem? id=1681 求最少经过的步数使得输入的矩阵全变为y. 思路:高斯消元求出自由变元.然后枚举自由变元,求出最优值. 注意依据自由变元求其它解及求最优值 ...

  3. AC自动机 + 概率dp + 高斯消元 --- HDU 5955 or 2016年沈阳icpc H [AC自动机 + 概率dp + 高斯消元]详解

    题目链接 题目大意: 就是有NNN个人,每个人都会猜一个长度为LLL的只包含{1,2,3,4,5,6}\{1,2,3,4,5,6\}{1,2,3,4,5,6}的序列,现在裁判开始投掷骰子,并且把每次的 ...

  4. ICPC 2005 hangzhou Generator (UVA1358)KMP + 期望DP / 高斯消元

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Generator Weblink https://www.luogu.com.cn/problem/ ...

  5. 2020 ACM / ICPC 济南 A Matrix Equation (高斯消元、乘法原理)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 给你定义两种 010101 矩阵上的运算: Xi,j×Yi,j=(∑k=1NXi,kYk,j ...

  6. luogu P4035 [JSOI2008]球形空间产生器(高斯消元 / 模拟退火)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 数据范围只开到了10,而且是经典的力学结构,所以我们可以用模拟退火,可以做一下 nnn 维的正交分解h ...

  7. BZOJ 2707: [SDOI2012]走迷宫 [高斯消元 scc缩点]

    2707: [SDOI2012]走迷宫 题意:求s走到t期望步数,\(n \le 10^4\),保证\(|SCC| \le 100\) 求scc缩点,每个scc高斯消元,scc之间直接DP 注意每次清 ...

  8. [BZOJ 3143][Hnoi2013]游走(高斯消元+期望)

    Description 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点, ...

  9. [Sdoi2017]硬币游戏 [高斯消元 KMP]

    [Sdoi2017]硬币游戏 题意:硬币序列,H T等概率出现,\(n \le 300\)个人猜了一个长为$ m \le 300$的字符串,出现即获胜游戏结束.求每个人获胜概率 考场用了[1444: ...

最新文章

  1. 皮一皮:人生就像编程,总有防不胜防的bug会被人发现...
  2. CentOS进不了系统
  3. 即时通讯源码对企业到底有多重要呢?
  4. java 中文文件路径乱码 解决方法
  5. Oracle JRE 7 Update 51 (64 bit) or higher is required forPolybase failed解决办法
  6. html图表插入ppt
  7. 稳压二极管工作原理及参数详解
  8. java工厂模式:简单工厂、工厂方法、抽象工厂(通俗易懂)
  9. python之父考虑重构python解释器_Python之父考虑重构Python解释器
  10. 准相位匹配二阶频率转换
  11. This Python interpreter is in a conda environment问题解决
  12. 英特尔RealSense激光雷达摄像头L515拆解分析
  13. IPD+CMMI+Scrum一体化研发管理解决方案之CMMI
  14. static应用知识:代码块
  15. 聊聊我是如何拿到这么多大厂offer的
  16. 测试开发实习日记(DAY1)
  17. css设置背景透明度 不影响其他文字图片
  18. 统计学的Python实现-010:四分位距
  19. STM32通过SPI采集DT50 ADS8320数据
  20. 小程序下滑分页加载数据

热门文章

  1. ADO.NET的数据库查询2009-12-07 02:20 P.M.ADO.NET的数据库查询
  2. FFmpeg中实现对多媒体信息的获取与打印av_dump_format
  3. SpringMVC和SpringBoot的拦截器 HandlerInterceptor 入门
  4. 查找最晚入职员工的所有信息---牛客网SQL实战篇
  5. 「 每日一练,快乐水题 」540. 有序数组中的单一元素
  6. FFmpeg再学习 -- Windows下安装说明
  7. C语言再学习 -- NUL和NULL的区别
  8. Java访问修饰符(访问控制符)
  9. Linux 内核的文件 Cache 管理机制介绍
  10. php accesscontrolalloworigin,php – Access-Control-Allow-Origin没有显示在codeigniter的响应头中...