HDU6073Matching In Multiplication
来源:互联网 发布:深圳淘宝大学培训 编辑:程序博客网 时间:2024/05/22 03:46
题目链接
题意
存在两个点集
分析
注意到要构成完全二分图,即每个点要且仅被一条边所连接。所以考虑度数不确定的点集
代码
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<vector>#include<queue>using namespace std;#define MAXN 300300#define eps 1e-7#define lson rt<<1#define rson rt<<1|1#define LL long longconst int mod=998244353;struct Edge{ int v; LL w; Edge(){} Edge(int _v,LL _w):v(_v),w(_w){}};vector<Edge> edge;vector<int> g[MAXN*2];int deg[MAXN*2];int vis[MAXN*2];LL cnt[2];LL ans;void addedge(int u,int v,LL w){ g[u].push_back(edge.size()); edge.push_back(Edge(v,w)); deg[u]++;}void dfs(int u,int f,int flg){ vis[u]=1; for(int i=0;i<g[u].size();++i){ Edge &e = edge[g[u][i]]; if(vis[e.v]) continue; deg[e.v]--; if(flg) ans=(ans*e.w)%mod; if(deg[e.v]==1) dfs(e.v,u,1-flg); }}void dfs2(int u,int f,int idx){ for(int i=0;i<g[u].size();++i){ Edge &e = edge[g[u][i]]; if(e.v==f || vis[e.v]) continue; vis[e.v]=1; cnt[idx]=(cnt[idx]*e.w)%mod; dfs2(e.v,u,1-idx); }}int main(){ int T,n,v; LL w; cin>>T; while(T--){ scanf("%d",&n); edge.clear(); memset(vis,0,sizeof(vis)); for(int i=1;i<=2*n;++i){ g[i].clear(); deg[i]=0; } for(int i=1;i<=n;++i){ for(int k=0;k<2;++k){ scanf("%d %I64d",&v,&w); v+=n; addedge(i,v,w); addedge(v,i,w); } } ans=1; for(int i=n+1;i<=2*n;++i) if(deg[i]==1) dfs(i,0,1); for(int i=1;i<=2*n;++i) if(!vis[i]){ cnt[0]=cnt[1]=1; dfs2(i,0,0); ans=(ans*(cnt[0]+cnt[1]))%mod; } printf("%I64d\n",ans); }}
阅读全文
0 0
- HDU6073Matching In Multiplication
- Matrix multiplication in OpenCV
- hdu6073 Matching In Multiplication
- HDU6073-Matching In Multiplication
- Matching In Multiplication HDU
- HDU6073 Matching In Multiplication【拓扑】
- HDU 6073 Matching In Multiplication
- HDU 6073 Matching In Multiplication
- HDU-6073 Matching In Multiplication
- 【图论】hdu6073 Matching In Multiplication
- hdu 6073 Matching In Multiplication
- matrix, mul, Normal multiplication in Shader
- hdu6073 Matching In Multiplication(搜索)
- hdu 6073 Matching In Multiplication [dfs]
- HDU6073-拓扑排序&搜索-Matching In Multiplication
- HDU 6073 Matching In Multiplication(机智)
- Matching In Multiplication(HDU 6073)
- 668. Kth Smallest Number in Multiplication Table
- One-Way Reform(欧拉回路)
- VirtualBox 下CentOS6.5 网络配置
- strstr(), strcasestr()
- koa2 中间件里面的next到底是什么
- 进程线程互斥锁实验总结
- HDU6073Matching In Multiplication
- 插入排序-Insertion sort
- javascript的setTimeout实现延时提示框
- 循环迭代hashmap
- 控制UV流动的脚本
- DOM常用操作
- @Embeddable注解Java类的作用
- GPU图形绘制管线
- tomcat 虚拟主机配置