POJ1325机器重启次数——二分图匈牙利算法模板
题目:http://poj.org/problem?id=1325
求最小点覆盖。输出最大匹配数就行,结果略复杂地弄了。
注意由题可知 可以直接把与0有关的边删掉。不过亲测不删0而计数时不计0就会WA。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,k,pre[],head[],xnt,a,x,y,ans;
bool vis[];
struct Node{
int next,to;
}edge[];
void add(int x,int y)
{
edge[++xnt].next=head[x];
edge[xnt].to=y;
head[x]=xnt;
}
bool dfs(int u)
{
vis[u]=;
for(int i=head[u];i;i=edge[i].next)
{
int v=edge[i].to;
if(vis[v])continue;
vis[v]=;
if(!pre[v]||dfs(pre[v]))
{
pre[v]=u;pre[u]=v;return true;
}
}
return false;
}
int main()
{
while()
{
scanf("%d",&n);
if(!n)return ;
memset(pre,,sizeof pre);
memset(head,,sizeof head);
xnt=;ans=;
scanf("%d%d",&m,&k);
for(int i=;i<=k;i++)
{
scanf("%d%d%d",&a,&x,&y);
if(!x||!y)continue;
add(x,y+);add(y+,x);
}
for(int i=;i<n;i++)
if(!pre[i])
{
memset(vis,,sizeof vis);
vis[i]=;dfs(i);
}
memset(vis,,sizeof vis);
for(int i=;i<n;i++)
if(!pre[i])
{
vis[i]=;dfs(i);
}
for(int i=;i<n;i++)
if(!vis[i])ans++;
for(int i=;i<m+;i++)
if(vis[i])ans++;
printf("%d\n",ans);
}
}
POJ1325机器重启次数——二分图匈牙利算法模板的更多相关文章
- 匈牙利算法模板 hdu 1150 Machine Schedule(二分匹配)
二分图:https://blog.csdn.net/c20180630/article/details/70175814 https://blog.csdn.net/flynn_curry/artic ...
- hdu 2063 过山车 (最大匹配 匈牙利算法模板)
匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名.匈牙利算法是基于Hall定理中充分性证明的思想,它是部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最 ...
- poj 1274 The Perfect Stall【匈牙利算法模板题】
The Perfect Stall Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 20874 Accepted: 942 ...
- HDU 2444 - The Accomodation of Students - [二分图判断][匈牙利算法模板]
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2444 Time Limit: 5000/1000 MS (Java/Others) Mem ...
- HDU 1045 - Fire Net - [DFS][二分图最大匹配][匈牙利算法模板][最大流求二分图最大匹配]
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1045 Time Limit: 2000/1000 MS (Java/Others) Mem ...
- hdu-1150(二分图+匈牙利算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1150 思路:题目中给出两个机器A,B:给出k个任务,每个任务可以由A的x状态或者B的y状态来完成. 完 ...
- POJ 1325 && 1274:Machine Schedule 匈牙利算法模板题
Machine Schedule Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12976 Accepted: 5529 ...
- 匈牙利 算法&模板
匈牙利 算法 一. 算法简介 匈牙利算法是由匈牙利数学家Edmonds于1965年提出.该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法. 二分图的定义: 设G=(V,E)是一个 ...
- hiho1122_二分图匈牙利算法
题目 给定一个图的N个节点和节点之间的M条边,数据保证该图可以构成一个二分图.求该二分图最大匹配. 题目链接:二分图最大匹配 首先通过染色法,将图的N个节点分成两个部分:然后通过匈牙利算法求二 ...
随机推荐
- JS-图片控制-动画管理模块
animateManage.js ;(function(window,document,undefined){ var _aniQueue = [], //动画队列 --- ani:动画,Queue: ...
- 通过SVN获取变更列表,得到对应的最新class
通过本地SVN获得未提交的文件列表获取工程中最新的class的方式参考: 增量部署代码利用批处理命令按原始结构复制指定的文件 新写了一个增强版,根据已提交至SVN的代码loglist,获取最新的cla ...
- 无法打开物理文件“xxxx.mdf”。操作系统错误 5:“5(拒绝访问)”
- MySQL更改了my.ini的#Path to the database root后,数据还写到原来的文件夹
重新启动数据库 http://www.cnblogs.com/argenbarbie/p/4090494.html
- Mac安装fish shell
1.brew update 2.brew install fish 3.sudo vi /etc/shells 增加内容:/usr/local/bin/fish ##增加fish到shell环境变 ...
- snagit12个人爱好
- bzoj2438
题解: tarjan+概率 首先tarjan缩点 然后计算一个x,计算方法: 1.每当有一个强连通分量i的入度为0,那么x++ 2.如果有一个强连通分量i,它的入度为0,且它连的每一条边只有他连,那么 ...
- 1017 A除以B
本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数.你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立. 输入格式: 输入在一行中依次给出 A 和 B,中间以 ...
- SHA1
整理于互动百科 安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital ...
- php 易忽略问题