CF1093D Beautiful Graph
给你一个 \(n\) 个点 \(m\) 条边的无向图。
你需要给每个点一个点权,使得每条边连接的两个点点权奇偶不同。点权的值域为 \(\{1,2,3\}\) 。
请求出方案数对 \(998244353\) 取模的结果。
图中没有重边或自环。
首先原图得是一个二分图否则无解,用并查集判断就行了
然后如果某个连通块只有一个点可以染三种颜色,否则的话一定是某一边一种颜色,另一边另一种颜色。奇数的话每个点有两种方案
//minamoto
#include<bits/stdc++.h>
#define R register
#define fp(i,a,b) for(R int i=a,I=b+1;i<I;++i)
#define fd(i,a,b) for(R int i=a,I=b-1;i>I;--i)
#define go(u) for(int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v)
using namespace std;
char buf[1<<21],*p1=buf,*p2=buf;
inline char getc(){return p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++;}
int read(){R int res,f=1;R char ch;while((ch=getc())>'9'||ch<'0')(ch=='-')&&(f=-1);for(res=ch-'0';(ch=getc())>='0'&&ch<='9';res=res*10+ch-'0');return res*f;
}
const int N=6e5+5,P=998244353;
int fa[N],bin[N],sz[N],n,m,u,v,ans,du,dv;
int find(int x){return x==fa[x]?x:fa[x]=find(fa[x]);}
void solve(){ans=1,n=read(),m=read();fp(i,1,n)fa[i]=i,sz[i]=1;fp(i,n+1,n*2)fa[i]=i,sz[i]=0;while(m--){u=read(),v=read(),du=find(u),dv=find(v+n);if(du!=dv)fa[du]=dv,sz[dv]+=sz[du];du=find(u+n),dv=find(v);if(du!=dv)fa[du]=dv,sz[dv]+=sz[du];}fp(i,1,n)if(find(i)==find(i+n))return (void)(puts("0"));fp(i,1,n)if(find(i)==i){if(sz[i]+sz[find(i+n)]==1)ans=3ll*ans%P;else ans=1ll*ans*(bin[sz[find(i)]]+bin[sz[find(i+n)]])%P;}printf("%d\n",ans);
}
int main(){
// freopen("testdata.in","r",stdin);int T=read();bin[0]=1;fp(i,1,3e5+5)bin[i]=1ll*bin[i-1]*2%P;while(T--)solve();return 0;
}
转载于:https://www.cnblogs.com/bztMinamoto/p/10140584.html
CF1093D Beautiful Graph相关推荐
- Codeforces 1093D Beautiful Graph
题目链接:http://codeforces.com/contest/1093/problem/D 第一次做这种题目,染色+组合数学.. 假设这个图里有奇数环,那么肯定是不行的,因为无论怎么样都是偶数 ...
- Educational Codeforces Round 56 Editorial
A.Dice Rolling 题意:Mishka 有一个六面的骰子,每面分别为 2 ~ 7,而且 Mishka 是欧皇,可以控制自己每次掷到的数字.Mishka 现在想掷若干次骰子,使得掷到的点数总和 ...
- SitePoint播客#57:不是负面
Episode 57 of The SitePoint Podcast is now available! This week your hosts are Patrick O'Keefe (@iFr ...
- 【tflearn系列教程】(一)为什么要学tflearn?
什么是tflearn 本教程参考自tflearn官方文档(英文版)http://tflearn.org,主要是对官方文档的翻译与讲解,并结合本人实战经验而作,如有错误,欢迎指出! 作者 : totor ...
- 思维、找规律题目汇总
转自:http://hi.baidu.com/liuzhe/blog/item/d2dc0fd10bf1eadb572c843d.html 感想: 1.还是数学有前途 2.猜想很重要 3.暴力打表可以 ...
- python——爬虫学习——Beautiful Soup库的使用-(2)
Beautiful Soup库 执行pip install beautifulsoup4安装Beautiful Soup库 Beautiful Soup库的简介 Beautiful Soup是一个可以 ...
- 图融合GCN(Graph Convolutional Networks)
图融合GCN(Graph Convolutional Networks) 数据其实是图(graph),图在生活中无处不在,如社交网络,知识图谱,蛋白质结构等.本文介绍GNN(Graph Neural ...
- Graph Representation 图神经网络
Graph Representation 图神经网络 图表示学习(representation learning)--图神经网络框架,主要涉及PyG.DGL.Euler.NeuGraph和AliGra ...
- TVM 图优化Graph Optimization
TVM 图优化Graph Optimization Codegen
- ONNX 实时graph优化方法
ONNX 实时graph优化方法 ONNX实时提供了各种图形优化来提高模型性能.图优化本质上是图级别的转换,从小型图简化和节点消除,到更复杂的节点融合和布局优化. 图形优化根据其复杂性和功能分为几个类 ...
最新文章
- 设置ECLIPSE插件注意目录的结构
- 青少年软件编程等级考试 python-中国电子学会、北大等推出青少年软件编程等级标准升级版...
- jzoj1295,P1607-轻轨(庙会班车)【贪心,线段树】
- Nexus3.x.x上传第三方jar
- .WeightedRandomSampler(3)
- 谷歌发布基于浏览器的 Spectre 攻击的 PoC exploit
- 警告: Can't find the request for http://localhost:8080/ibatisSpringDemo/ws/testWS's Observer
- 【SQL篇章--CREATE TABLE】
- php 开源邮件系统,企业级开源邮件系统搭建的全过程
- php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
- java 出路 xls_java读取excel之xlsl超大文件
- Xcode8去除控制台多余打印
- 西南交通大学计算机应用基础第1次作业,西南交通大学计算机应用基础第一次作业答案.doc...
- 不值一提的计算机基础教程-0-前言
- 美国无人机技术及相关项目
- pma连接,报错10061
- 文件集群服务器怎么搭建,一台云服务器怎么搭建集群
- L138常有网址-李云 酷壳等
- springcloud微服务项目解析与服务拆分
- 组件服务计算机卡死,wsappx进程占用系统资源过多导致电脑卡死的解决方法
热门文章
- tomcat部署安装
- bootstrap 黑边框表格样式_bootstrap3.0教程之多种表格效果(条纹状表格、条纹状表格、鼠标悬停等)...
- android activity根节点addview_Android嵌入到页面中的加载动画工具类
- 20172318 2017-2018-2 《程序设计与数据结构》第11周学习总结
- vm.$nextTick( [callback] )用法
- Forge Viewer 的协作审查如何使用
- 有趣的flash例子
- void android.os.Bundle.putBoolean(java.lang.String
- OC基础--关键字@property 和 @synthesize
- Spring学习篇01-Spring容器相关基本概念