给你一个 \(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相关推荐

  1. Codeforces 1093D Beautiful Graph

    题目链接:http://codeforces.com/contest/1093/problem/D 第一次做这种题目,染色+组合数学.. 假设这个图里有奇数环,那么肯定是不行的,因为无论怎么样都是偶数 ...

  2. Educational Codeforces Round 56 Editorial

    A.Dice Rolling 题意:Mishka 有一个六面的骰子,每面分别为 2 ~ 7,而且 Mishka 是欧皇,可以控制自己每次掷到的数字.Mishka 现在想掷若干次骰子,使得掷到的点数总和 ...

  3. SitePoint播客#57:不是负面

    Episode 57 of The SitePoint Podcast is now available! This week your hosts are Patrick O'Keefe (@iFr ...

  4. 【tflearn系列教程】(一)为什么要学tflearn?

    什么是tflearn 本教程参考自tflearn官方文档(英文版)http://tflearn.org,主要是对官方文档的翻译与讲解,并结合本人实战经验而作,如有错误,欢迎指出! 作者 : totor ...

  5. 思维、找规律题目汇总

    转自:http://hi.baidu.com/liuzhe/blog/item/d2dc0fd10bf1eadb572c843d.html 感想: 1.还是数学有前途 2.猜想很重要 3.暴力打表可以 ...

  6. python——爬虫学习——Beautiful Soup库的使用-(2)

    Beautiful Soup库 执行pip install beautifulsoup4安装Beautiful Soup库 Beautiful Soup库的简介 Beautiful Soup是一个可以 ...

  7. 图融合GCN(Graph Convolutional Networks)

    图融合GCN(Graph Convolutional Networks) 数据其实是图(graph),图在生活中无处不在,如社交网络,知识图谱,蛋白质结构等.本文介绍GNN(Graph Neural ...

  8. Graph Representation 图神经网络

    Graph Representation 图神经网络 图表示学习(representation learning)--图神经网络框架,主要涉及PyG.DGL.Euler.NeuGraph和AliGra ...

  9. TVM 图优化Graph Optimization

    TVM 图优化Graph Optimization Codegen

  10. ONNX 实时graph优化方法

    ONNX 实时graph优化方法 ONNX实时提供了各种图形优化来提高模型性能.图优化本质上是图级别的转换,从小型图简化和节点消除,到更复杂的节点融合和布局优化. 图形优化根据其复杂性和功能分为几个类 ...

最新文章

  1. 设置ECLIPSE插件注意目录的结构
  2. 青少年软件编程等级考试 python-中国电子学会、北大等推出青少年软件编程等级标准升级版...
  3. jzoj1295,P1607-轻轨(庙会班车)【贪心,线段树】
  4. Nexus3.x.x上传第三方jar
  5. .WeightedRandomSampler(3)
  6. 谷歌发布基于浏览器的 Spectre 攻击的 PoC exploit
  7. 警告: Can't find the request for http://localhost:8080/ibatisSpringDemo/ws/testWS's Observer
  8. 【SQL篇章--CREATE TABLE】
  9. php 开源邮件系统,企业级开源邮件系统搭建的全过程
  10. php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
  11. java 出路 xls_java读取excel之xlsl超大文件
  12. Xcode8去除控制台多余打印
  13. 西南交通大学计算机应用基础第1次作业,西南交通大学计算机应用基础第一次作业答案.doc...
  14. 不值一提的计算机基础教程-0-前言
  15. 美国无人机技术及相关项目
  16. pma连接,报错10061
  17. 文件集群服务器怎么搭建,一台云服务器怎么搭建集群
  18. L138常有网址-李云 酷壳等
  19. springcloud微服务项目解析与服务拆分
  20. 组件服务计算机卡死,wsappx进程占用系统资源过多导致电脑卡死的解决方法

热门文章

  1. tomcat部署安装
  2. bootstrap 黑边框表格样式_bootstrap3.0教程之多种表格效果(条纹状表格、条纹状表格、鼠标悬停等)...
  3. android activity根节点addview_Android嵌入到页面中的加载动画工具类
  4. 20172318 2017-2018-2 《程序设计与数据结构》第11周学习总结
  5. vm.$nextTick( [callback] )用法
  6. Forge Viewer 的协作审查如何使用
  7. 有趣的flash例子
  8. void android.os.Bundle.putBoolean(java.lang.String
  9. OC基础--关键字@property 和 @synthesize
  10. Spring学习篇01-Spring容器相关基本概念