博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[UOJ79]一般图最大匹配
阅读量:5965 次
发布时间:2019-06-19

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

带花树,那是啥?

每次复杂度 \(O(nm)\) 随机5次似乎就卡不掉(起码现在uoj上没有能卡掉这个的

#include 
using namespace std;int read() { int x = 0, c = getchar(); while (!isdigit(c)) c = getchar(); while (isdigit(c)) x = x * 10 + c - '0', c = getchar(); return x;}#define pb push_back#define lo1(i,a) for(int i = 1; i <= a; ++i)vector
G[505];int mat[505], Ans[505], ans, n = read(), m = read(), vis[503], idx;bool dfs(int u) { vis[u] = idx; random_shuffle(G[u].begin(), G[u].end()); for (auto v : G[u]) { int v1 = mat[v]; if (vis[v1] == idx) continue; mat[v1] = 0, mat[u] = v, mat[v] = u; if (!v1 || dfs(v1)) return 1; mat[v1] = v, mat[u] = 0, mat[v] = v1; } return 0;}inline void add(int u, int v) {G[u].pb(v), G[v].pb(u);}int main() { while (m--) add(read(), read()); lo1(K, 3) { lo1(i, n) if (!mat[i]) ++idx, dfs(i); int tmp = 0; lo1(i, n) tmp += (mat[i] != 0); if (tmp > ans) ans = tmp, copy(mat + 1, mat + 1 + n, Ans + 1); } cout << ans / 2 << '\n'; lo1(i, n) cout << Ans[i] << ' '; return 0;}

转载于:https://www.cnblogs.com/storz/p/10472759.html

你可能感兴趣的文章
10个重要的Linux ps命令实战
查看>>
运维前线:一线运维专家的运维方法、技巧与实践3.1 数据中心搬迁准备
查看>>
101个MySQL调试和优化技巧
查看>>
精诚合作 共创未来——阿里云数据智能合作策略介绍
查看>>
《游戏大师Chris Crawford谈互动叙事》一1.1 故事叙述的历史
查看>>
《Puppet实战手册》——导读
查看>>
《C程序员从校园到职场》一1.2 C语言的主要特点
查看>>
《万物互联》——2.3 理解智能设备
查看>>
《Hadoop海量数据处理:技术详解与项目实战(第2版)》一第2章 环境准备
查看>>
《指针的编程艺术(第二版)》一3.8 改错题
查看>>
《数据库技术原理与应用教程第2版》——3.6计算机世界与物理模型
查看>>
深入实践Spring Boot2.4.3 节点实体持久化
查看>>
《PHP和MySQL Web开发从新手到高手(第5版)》一一1.7 万事俱备,摩拳擦掌
查看>>
《C#本质论(第4版)》一1.2 C#语法基础
查看>>
利用反射获取类或者方法或者字段上的注解的值
查看>>
精通Python网络爬虫:核心技术、框架与项目实战.1.4 网络爬虫的类型
查看>>
《ANTLR 4权威指南 》一导读
查看>>
自己动手构造编译系统:编译、汇编与链接2.4.1 汇编词法、语法分析
查看>>
演讲|微软全球公共事业部政府行业总经理Mark Day:第四次工业革命的数字红利...
查看>>
Adopt Open JDK官方文档(四)基于虚拟机的编译环境
查看>>