博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 6073 - Matching In Multiplication | 2017 Multi-University Training Contest 4
阅读量:6606 次
发布时间:2019-06-24

本文共 2192 字,大约阅读时间需要 7 分钟。

/*HDU 6073 - Matching In Multiplication [ 图论 ]  |  2017 Multi-University Training Contest 4题意:	定义一张二分图,U中每个节点和V中两个节点连边	完美匹配的权值为该匹配所有边的权值相乘	求所有完美匹配的权值之和分析:	可以发现有些V中的点只能连唯一的U中的点	按拓扑排序思路将这些全部处理掉后,剩下的点构成一个个环	每个环有两种连线方式,间隔取边权*/#include 
using namespace std;#define LL long longconst int N = 600005;const LL MOD = 998244353;struct Edge { int v; LL w;};vector
G[N];int vis[N];int cnt[N];int t, n;LL ans;queue
que;LL s[2];void dfs(int x, int pre, int p){ if (vis[x]) return; vis[x] = 2; for (const auto & e : G[x]) { if (vis[e.v] == 1 || e.v == pre) continue; s[p] = s[p] * e.w % MOD; dfs(e.v, x, p^1); break; }}void solve(){ for (int i = n+1; i <= 2*n; i++) if (G[i].size() == 1) que.push(i); ans = 1; while (!que.empty()) { int y = que.front(); que.pop(); vis[y] = 1; for (const auto& e: G[y]) { if (!vis[e.v]) { vis[e.v] = 1; ans = ans * e.w % MOD; for (const auto & ee: G[e.v]) { if (vis[ee.v]) continue; cnt[ee.v]--; if (cnt[ee.v] == 1) que.push(ee.v); } } } } for (int i = 1; i <= n; i++) { if (!vis[i]) { s[0] = s[1] = 1; dfs(i, i, 0); ans = ans * (s[0] + s[1]) % MOD; } }}void init(int n){ for (int i = 0; i <= n; i++) G[i].clear(); while (!que.empty()) que.pop(); memset(vis, 0, sizeof(vis)); memset(cnt, 0, sizeof(cnt));}int main(){ scanf("%d", &t); while (t--) { scanf("%d", &n); init(n<<1); for (int i = 1; i <= n; i++) { int v; LL w; scanf("%d%lld", &v, &w); v += n; G[i].push_back(Edge{v, w}); G[v].push_back(Edge{i, w}); cnt[v]++; scanf("%d%lld", &v, &w); v += n; G[i].push_back(Edge{v, w}); G[v].push_back(Edge{i, w}); cnt[v]++; } solve(); printf("%lld\n", ans); }}

  

转载于:https://www.cnblogs.com/nicetomeetu/p/7293883.html

你可能感兴趣的文章
嵌入式 详解udev
查看>>
《C程序员:从校园到职场》出版预告(2):从“百花齐放”到“一枝独秀”
查看>>
Network Monitor 查询命令和MySQL命令
查看>>
好“戏”刚刚开幕 云计算逐步被认可
查看>>
云安全:这也是需要花大钱去建设的部分
查看>>
以全局产业观领航智慧城市建设
查看>>
5G网络不止能1秒下一部电影,它还能够…
查看>>
中国电信集采终端6700万部 金额达1070亿元
查看>>
2016年的十个数据中心故事
查看>>
《Java并发编程的艺术》一一3.3 顺序一致性
查看>>
《CCNP SWITCH 300-115认证考试指南》——导读
查看>>
《设计之外——比修图更重要的111件事》—第1部分3 虚心学习
查看>>
Solaris Studio 12.4 Beta update 7/2014
查看>>
EVCache —— Netflix 的分布式内存数据存储
查看>>
《用友ERP-U8(8.72版)标准财务模拟实训》——1.4 系统管理注册和导入演示账套...
查看>>
《Node.js区块链开发》一3.6 总结
查看>>
《UG NX8.0中文版完全自学手册》一2.8 布尔运算
查看>>
移动阅读时代“长文章”生存状态调查
查看>>
springboot docker笔记
查看>>
跟我一起学QT3:电子表格的制作
查看>>