题目大意

一般图最大匹配.

题解:

求解一般图最大匹配.
直接使用带花树即可.
(带花树也是刚学)...

马上写带花树的ppt,会很通俗易懂.
(充分证明了本苣智商不够,写不出高深的课件)

如果有想要的依然可以直接私信我 QAQ

带花树模板

#include <cstdio>
#include <cstring>
#include <algorithm>
typedef long long ll;
inline void read(int &x){x=0;char ch;bool flag = false;while(ch=getchar(),ch<'!');if(ch == '-') ch=getchar(),flag = true;while(x=10*x+ch-'0',ch=getchar(),ch>'!');if(flag) x=-x;
}
#define rg register int
#define rep(i,a,b) for(rg i=(a);i<=(b);++i)
#define per(i,a,b) for(rg i=(a);i>=(b);--i)
const int maxn = 256;
int n;
bool map[maxn][maxn],inq[maxn],inBlo[maxn],mark[maxn];
int link[maxn],fa[maxn],belong[maxn],q[maxn],l,r;
inline void bloom(int x,int y){rep(i,0,n) mark[i] = inBlo[i] = false;
#define nx(x) fa[link[(x)]]int lca;for(rg i=x;i;i=nx(i)) mark[i = belong[i]] = true;for(rg i=y;i;i=nx(i)){i = belong[i];if(mark[i]){lca = i;break;}}for(rg i=x;belong[i] != lca;i=nx(i)){if(belong[nx(i)] != lca) fa[nx(i)] = link[i];inBlo[belong[i]] = inBlo[belong[link[i]]] = true;}for(rg i=y;belong[i] != lca;i=nx(i)){if(belong[nx(i)] != lca) fa[nx(i)] = link[i];inBlo[belong[i]] = inBlo[belong[link[i]]] = true;}
#undef nxif(belong[x] != lca) fa[x] = y;if(belong[y] != lca) fa[y] = x;rep(i,1,n) if(inBlo[belong[i]]){belong[i] = lca;if(!inq[i]) inq[q[++r] = i] = true;}
}
inline void modify(int s){int x,y,z = s;while(z){y = fa[z];x = link[y];link[y] = z;link[z] = y;z = x;}
}
inline void bfs(int s){rep(i,0,n){fa[i] = inq[i] = 0;belong[i] = i;}l = 0;r = -1;q[++r] = s;inq[s] = true;while(l <= r){int u = q[l++];rep(v,1,n){if(map[u][v] == 0 || belong[u] == belong[v] || link[u] == v) continue;if(s == v || link[v] && fa[link[v]]) bloom(u,v);else if(fa[v] == 0){fa[v] = u;if(link[v] != 0){q[++r] = link[v];inq[link[v]] = true;}else{modify(v);return ;}}}}return ;
}
int main(){read(n);int u,v;while(scanf("%d%d",&u,&v) != EOF){map[u][v] = map[v][u] = true;}rep(i,1,n) if(link[i] == 0) bfs(i);int ans = 0;rep(i,1,n) if(link[i] != 0) ++ ans;printf("%d\n",ans);rep(i,1,n){if(link[i] > i) printf("%d %d\n",i,link[i]);}return 0;
}

转载于:https://www.cnblogs.com/Skyminer/p/6815608.html

[Ural1099]工作安排 带花树相关推荐

  1. [转]带花树,Edmonds's matching algorithm,一般图最大匹配

    看了两篇博客,觉得写得不错,便收藏之.. 首先是第一篇,转自某Final牛 带花树--其实这个算法很容易理解,但是实现起来非常奇葩(至少对我而言). 除了wiki和amber的程序我找到的资料看着都不 ...

  2. 综合布线工作组2008年上半年技术课题工作安排会议通知

    中国工程建设标准化协会信息通信专业委员会   建标信通字[2008] 02号 综合布线工作组2008年上半年技术课题工作安排会议通知   各工作组成员 中国工程建设标准化协会信息通信专业委员会综合布线 ...

  3. 广角相机app哪个比较好用_推荐一款比较好用的工作安排备忘app?

    工作效率高的上班族,做事有计划,自律能力强,可以很好地完成工作任务.当然了,选择一款好用的工作安排备忘app也是非常重要的. 王鹏在一家公司上班,是一个行动力很强的人.工作上的事情按时完成,还利用空闲 ...

  4. URAL - 1099 Work Scheduling(一般图最大匹配-带花树模板)

    题目链接:点击查看 题目大意:给出n个警卫,接下来给出数个关系,表示两个警卫可以互相配合,现在规定只有可以互相配合的警卫才能留下来继续工作,问最多能有多少个警卫留下来工作,输出匹配方案 题目分析:一般 ...

  5. 一般图最大匹配——带花树

    所谓花,就是如下图所示的一个奇环: 本文中粗边代表现在的匹配边,细边代表该点的前驱(后文会讲解前驱是什么,现在只需要知道每个点和它的前驱在原图中一定是有边的). 如图所示,一朵包含\(2k+1\)个点 ...

  6. 关于技术管理者应该如何做好工作安排的一点思考

    技术管理者的主要工作是带人.做事.看方向.带人是指团队人员能力的培养.团队梯队的建设等等:做事是指完成各项业务需求:看方向是指明确团队未来的发展方向和目标. 我们经常会辩论"做管理了还要不要 ...

  7. 济南电子机械工程学校计算机专业班主任,济南电子机械工程学校2019级新生报到、军训工作安排通知...

    济南电子机械工程学校2019级新生报到.军训工作安排通知 各位家长朋友.2019级新同学: 为妥善做好2019级新生报到及军训工作,现将学校2019级新生报到.军训工作具体安排如下,请您知悉并遵照执行 ...

  8. [BZOJ1572][Usaco2009 Open]工作安排Job

    1572: [Usaco2009 Open]工作安排Job Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 1351  Solved: 632 [Sub ...

  9. 麦肯锡顾问深度工作安排:将工作可视化

    工作表安排的三个步骤 凡是善于工作的人,都有一个共通的方法,那就是他们能够有意识或者无意识地使自己的整体工作可视化. 商业系统型的工作安排法: 流程:为了创造价值明确工作的整体流程 分解:将整体流程分 ...

  10. luogu P4258 [WC2016]挑战NPC(一般图的最大匹配,带花树,建图、拆点技巧)

    整理的算法模板合集: ACM模板 luogu P4258 [WC2016]挑战NPC 如果是一堆球一堆筐,每一个筐里只能放一个球,求最大能放多少个球, 那么就是一个二分图的最大匹配问题,非常简单,我们 ...

最新文章

  1. mongoTemplate 条件查询
  2. AndroidCamera开发学习笔记01
  3. android js变量定义数组长度,js 声明数组和向数组中添加对象变量的简单实例
  4. 文巾解题 27. 移除元素
  5. Android中使用SeekBar拖动条实现改变图片透明度
  6. css hack技术整理
  7. 用java编写的一个迪杰斯特拉算法(单源最短路径算法,Dijkstra算法)。
  8. 3.2 选择最可能的句子
  9. 信号量sem 的用法
  10. Bootstrap 多媒体对象(Media Object)
  11. 肌电|表面肌电应用的新进展
  12. OpenEuler编译、安装与挂载f2fs文件系统
  13. Android 端天气预报APP的实现(二)阿里云天气预报API的获取
  14. 网络操作系统之VyOS部署
  15. 使用python抓取落网期刊图片
  16. 用css实现扑克牌,图片的翻转效果
  17. MySQL中实现rank排名查询以及在Mybatis中使用 mysql 的自定义变量 @的问题解决
  18. iFix专题——零基础学习iFix
  19. NE555构成多谐振荡器及三角波、正弦波的生成(附工程文件)
  20. 神州笔记本战神风扇声音大怎么解决

热门文章

  1. 深度学习系列(二)【人类语言处理--语音辨识】
  2. 如何准备数学建模?(附建模必备资料)
  3. 求解偏微分方程开源有限元软件deal.II学习--Step 13
  4. 六千字干货文:到底要怎么去学算法?
  5. [转]VC编辑中的一些方法
  6. 2019招行信用卡中心春招笔试题
  7. sublime 执行print带有中文时出错Decode error - output not utf-8
  8. 腾讯校招技术岗面试经历及总结(已发offer)
  9. 【转】【翻】Android Design Support Library 的 代码实验——几行代码,让你的 APP 变得花俏...
  10. python爬虫常用第三方库