Educational Codeforces Round 56 D - Beautiful Graph
题目大意:
在给定的一个图中(可能不连通)
给每个点赋值1、2、3 使得一条边上的两个端点点权相加为奇数
求方案数
一条满足条件的路径上的点权必为一奇一偶交替
偶数只有2 奇数有1、3
若位于1、3、5、.... 的点有x1个 位于2、4、6、... 的点有x0个
那么一条路径的方案数为 2^x1+2^x0 (x1的点作为奇数点的方案+x0的点作为奇数点的方案)
当图不连通 存在多个子图 那么每个子图的方案数相乘 就是总的方案数
当图中存在环时 若环上的点数为偶数则同样满足上式 但为奇数则整条路径不可能有解
#include <bits/stdc++.h>
#define LL long long
#define mod 998244353
using namespace std;
int n,m;
const int N=3e5+;
vector <int> e[N];
bool vis[N], NO;
int col[N], m0, m1;
LL p[N];
void init() {
p[]=1LL;
for(int i=;i<N;i++)
p[i]=p[i-]*2LL%mod;
}
void dfs(int u,int c) {
if(NO) return;
col[u]=c;
if(col[u]) m1++;
else m0++;
for(int i=;i<e[u].size();i++) {
int v=e[u][i];
if(col[v]==-) dfs(v,c^);
else if(col[v]==col[u]) {
NO=; return; // 环上的点数为奇数个
}
}
}
int main()
{
init();
int t; scanf("%d",&t);
while(t--) {
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
e[i].clear(), col[i]=-;
for(int i=;i<m;i++) {
int u,v; scanf("%d%d",&u,&v);
e[u].push_back(v), e[v].push_back(u);
}
LL ans=1LL; NO=;
for(int i=;i<=n;i++)
if(col[i]==-) {
m0=m1=; dfs(i,);
if(NO) break;
ans=(p[m0]+p[m1])%mod*ans%mod;
}
if(NO) printf("0\n");
else printf("%I64d\n",ans);
} return ;
}
Educational Codeforces Round 56 D - Beautiful Graph的更多相关文章
- [Educational Codeforces Round 63 ] D. Beautiful Array (思维+DP)
Educational Codeforces Round 63 (Rated for Div. 2) D. Beautiful Array time limit per test 2 seconds ...
- Educational Codeforces Round 56 (Rated for Div. 2) D. Beautiful Graph 【规律 && DFS】
传送门:http://codeforces.com/contest/1093/problem/D D. Beautiful Graph time limit per test 2 seconds me ...
- Educational Codeforces Round 56 (Rated for Div. 2) ABCD
题目链接:https://codeforces.com/contest/1093 A. Dice Rolling 题意: 有一个号数为2-7的骰子,现在有一个人他想扔到几就能扔到几,现在问需要扔多少次 ...
- Educational Codeforces Round 56 (Rated for Div. 2)
涨rating啦.. 不过话说为什么有这么多数据结构题啊,难道是中国人出的? A - Dice Rolling 傻逼题,可以用一个三加一堆二或者用一堆二,那就直接.. #include<cstd ...
- Educational Codeforces Round 56 Solution
A. Dice Rolling 签到. #include <bits/stdc++.h> using namespace std; int t, n; int main() { scanf ...
- Educational Codeforces Round 56 (Rated for Div. 2) D. Beautiful Graph (二分图染色)
题意:有\(n\)个点,\(m\)条边的无向图,可以给每个点赋点权\({1,2,3}\),使得每个点连的奇偶不同,问有多少种方案,答案对\(998244353\)取模. 题解:要使得每个点所连的奇偶不 ...
- Educational Codeforces Round 12 E. Beautiful Subarrays 字典树
E. Beautiful Subarrays 题目连接: http://www.codeforces.com/contest/665/problem/E Description One day, ZS ...
- Educational Codeforces Round 12 E. Beautiful Subarrays 预处理+二叉树优化
链接:http://codeforces.com/contest/665/problem/E 题意:求规模为1e6数组中,连续子串xor值大于等于k值的子串数: 思路:xor为和模2的性质,所以先预处 ...
- Multidimensional Queries(二进制枚举+线段树+Educational Codeforces Round 56 (Rated for Div. 2))
题目链接: https://codeforces.com/contest/1093/problem/G 题目: 题意: 在k维空间中有n个点,每次给你两种操作,一种是将某一个点的坐标改为另一个坐标,一 ...
随机推荐
- QT的三种开发方式
最近在学习QT GUI,单纯使用C++硬编码的方式,直接是采用QWidget部件来做,而不是采用QT Designer做UI界面,也不是采用QML+Javascript.单纯使用C++硬编码的方式,缺 ...
- 18-python基础-字符串(1)
1.字符串的定义 字符串就是一串字符,是编程语言中表示文本的数据类型. 在python中可以使用一对双引号“”或者一对单引号‘’定义一个字符串. 可以使用索引获取一个字符串中指定位置的字符,索引计数从 ...
- [BJWC2018]上学路线
Description 小B 所在的城市的道路构成了一个方形网格,它的西南角为(0,0),东北角为(N,M). 小B 家住在西南角,学校在东北角.现在有T 个路口进行施工,小B 不能通过这些路口.小B ...
- zabbix-Graphs
图形 概述 随着大量的监控数据被采集到Zabbix中,如果用户可以以可视化的表现形式来查看发生了什么事情,那么和仅仅只有数字的表现形式比起来则更加轻松. 以下是进行图形设置的地方.图形可以一目了然地掌 ...
- Ubuntu apt-get 更新/查看软件
ubuntu 升级软件: sudo apt-get update 更新源 sudo apt-get upgrade 更新已安装的包 sudo apt-get dist-upgrade 升级系统 ubu ...
- 2、eureka注册中心集群
1. Eureka作为spring cloud的服务发现与注册中心,在整个的微服务体系中,处于核心位置.单机模式下的eureka服务,显然不能满足高可用的实际生产环境,这就要求配置一个能够应对各种突发 ...
- MyBatis笔记一:GettingStart
MyBatis笔记一:GettingStart 1.MyBatis优点 我们的工具和各种框架的作用就是为了我们操作数据库简洁,对于一些数据库的工具能帮我们少写一些处理异常等等的代码,但是他们并不是自动 ...
- 微信小程序app.json文件常用全局配置
小程序根目录下的 app.json 文件用来对微信小程序进行全局配置,决定页面文件的路径.窗口表现.设置网络超时时间.设置多 tab 等. JOSN文件不允许注释,下面为了学习加上注释,粘贴需要的片段 ...
- Elasticsearch添加Shield后TransportClient如何连接?
Elasticsearch添加Shield后TransportClient如何连接? 时间 2015-12-28 10:24:01 旁门左道 原文 http://log.medcl.net/ite ...
- 第四章 K8s部署安装
一.kube-proxy开启ipvs的前置条件 //1.加载netfilter模块 modprobe br_netfilter //2.添加配置文件 cat > /etc/sysconfig/m ...