题目: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机器重启次数——二分图匈牙利算法模板的更多相关文章

  1. 匈牙利算法模板 hdu 1150 Machine Schedule(二分匹配)

    二分图:https://blog.csdn.net/c20180630/article/details/70175814 https://blog.csdn.net/flynn_curry/artic ...

  2. hdu 2063 过山车 (最大匹配 匈牙利算法模板)

    匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名.匈牙利算法是基于Hall定理中充分性证明的思想,它是部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最 ...

  3. poj 1274 The Perfect Stall【匈牙利算法模板题】

    The Perfect Stall Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 20874   Accepted: 942 ...

  4. HDU 2444 - The Accomodation of Students - [二分图判断][匈牙利算法模板]

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2444 Time Limit: 5000/1000 MS (Java/Others) Mem ...

  5. HDU 1045 - Fire Net - [DFS][二分图最大匹配][匈牙利算法模板][最大流求二分图最大匹配]

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1045 Time Limit: 2000/1000 MS (Java/Others) Mem ...

  6. hdu-1150(二分图+匈牙利算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1150 思路:题目中给出两个机器A,B:给出k个任务,每个任务可以由A的x状态或者B的y状态来完成. 完 ...

  7. POJ 1325 && 1274:Machine Schedule 匈牙利算法模板题

    Machine Schedule Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 12976   Accepted: 5529 ...

  8. 匈牙利 算法&模板

    匈牙利 算法 一. 算法简介 匈牙利算法是由匈牙利数学家Edmonds于1965年提出.该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法. 二分图的定义: 设G=(V,E)是一个 ...

  9. hiho1122_二分图匈牙利算法

    题目 给定一个图的N个节点和节点之间的M条边,数据保证该图可以构成一个二分图.求该二分图最大匹配. 题目链接:二分图最大匹配     首先通过染色法,将图的N个节点分成两个部分:然后通过匈牙利算法求二 ...

随机推荐

  1. JS-图片控制-动画管理模块

    animateManage.js ;(function(window,document,undefined){ var _aniQueue = [], //动画队列 --- ani:动画,Queue: ...

  2. 通过SVN获取变更列表,得到对应的最新class

    通过本地SVN获得未提交的文件列表获取工程中最新的class的方式参考: 增量部署代码利用批处理命令按原始结构复制指定的文件 新写了一个增强版,根据已提交至SVN的代码loglist,获取最新的cla ...

  3. 无法打开物理文件“xxxx.mdf”。操作系统错误 5:“5(拒绝访问)”

  4. MySQL更改了my.ini的#Path to the database root后,数据还写到原来的文件夹

    重新启动数据库 http://www.cnblogs.com/argenbarbie/p/4090494.html

  5. Mac安装fish shell

    1.brew update 2.brew install fish 3.sudo vi /etc/shells 增加内容:/usr/local/bin/fish   ##增加fish到shell环境变 ...

  6. snagit12个人爱好

  7. bzoj2438

    题解: tarjan+概率 首先tarjan缩点 然后计算一个x,计算方法: 1.每当有一个强连通分量i的入度为0,那么x++ 2.如果有一个强连通分量i,它的入度为0,且它连的每一条边只有他连,那么 ...

  8. 1017 A除以B

    本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数.你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立. 输入格式: 输入在一行中依次给出 A 和 B,中间以 ...

  9. SHA1

    整理于互动百科 安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital ...

  10. php 易忽略问题