NYOJ 239:http://acm.nyist.net/JudgeOnline/problem.php?pid=239

ural 1109 :http://acm.timus.ru/problem.aspx?space=1&num=1109

NYOJ 月老的难题,是裸的最大匹配,很烦的是邻接阵超时。改用邻接表。

#include <bits/stdc++.h>
using namespace std;
#define maxn 1005 vector <int> G[maxn];
bool use[maxn];
int match[maxn];
int m,n,k; bool dfs(int u)
{
for(int i=;i<G[u].size();i++)
{
if(use[G[u][i]]==false)
{
use[G[u][i]] = true;
if(match[G[u][i]]==-||dfs(match[G[u][i]]))
{
match[G[u][i]] = u;
return true;
}
}
}
return false;
} int main()
{ scanf("%d%d%d",&m,&n,&k);
for(int i=;i<k;i++)
{
int u,v;
scanf("%d%d",&u,&v);
G[u].push_back(v);
}
memset(match,-,sizeof(match));
int ans = ;
for(int i=;i<=m;i++)
{
memset(use,,sizeof(use));
if(dfs(i))
ans ++;
}
printf("%d\n",ans);
//printf("%d\n",m+n-ans);
return ;
}

然后是ural,最小路径覆盖。

题意:

A国家有M个代表,B国有N个代表,其中有K对代表可以进行谈判(一个是A国的,一个是B国的),并且每一个代表至少被包含在其中一对中(也就是说,每个 人可以至少找到另外一个人谈判),每一对谈判需要一对电话联系(一对电话联系数目算1),现在使每个人都能进行电话联系的最少联系数目。

就是求最少对数。每个点都要有边相连,这样的边最少是多少——最小路径覆盖。

首先求一下最大匹配(都是一对一),可能还有没有匹配的人,加上这些人,如案例: 最大匹配2,还有左边2号没有匹配。加上这个人。

得公式:

最小路径覆盖 = n+ m - 2 * ans + ans;

#include <bits/stdc++.h>
using namespace std;
#define maxn 1005 vector <int> G[maxn];
bool use[maxn];
int match[maxn];
int m,n,k; bool dfs(int u)
{
for(int i=;i<G[u].size();i++)
{
if(use[G[u][i]]==false)
{
use[G[u][i]] = true;
if(match[G[u][i]]==-||dfs(match[G[u][i]]))
{
match[G[u][i]] = u;
return true;
}
}
}
return false;
} int main()
{ scanf("%d%d%d",&m,&n,&k);
for(int i=;i<k;i++)
{
int u,v;
scanf("%d%d",&u,&v);
G[u].push_back(v);
}
memset(match,-,sizeof(match));
int ans = ;
for(int i=;i<=m;i++)
{
memset(use,,sizeof(use));
if(dfs(i))
ans ++;
}
printf("%d\n",m+n-ans);
return ;
}

ural 1109,NYOJ 239,匈牙利算法邻接表的更多相关文章

  1. nyoj 239 月老的难题【匈牙利算法+邻接表】

    月老的难题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福 ...

  2. hdu 2444 The Accomodation of Students(二分匹配 匈牙利算法 邻接表实现)

    The Accomodation of Students Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ( ...

  3. 二分图最大匹配|UOJ#78|匈牙利算法|边表|Elena

    #78. 二分图最大匹配 从前一个和谐的班级,有 nlnl 个是男生,有 nrnr 个是女生.编号分别为 1,…,nl1,…,nl 和 1,…,nr1,…,nr. 有若干个这样的条件:第 vv 个男生 ...

  4. poj1273--Drainage Ditches(最大流Edmond-Karp算法 邻接表实现)

    最大流模板题 大部分Edmond-Karp算法代码都是邻接矩阵实现,试着改成了邻接表. #include <iostream> #include <cstdio> #inclu ...

  5. ZSTU OJ 3999 零基础学算法---邻接表

    题目:Click here 题意:我就喜欢中文题! 分析:这个题虽然是中文题,但是还是有一点费解的.其实就是给你一棵树,是用图的形式给你的,只知道a,b之间有一条边,并不知道谁是父,谁是子.思路就是先 ...

  6. prime算法邻接表写法

    #include <iostream> #include <queue> using namespace std; typedef struct { long v; long ...

  7. poj 3894 System Engineer (二分图最大匹配--匈牙利算法)

    System Engineer Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 507   Accepted: 217 Des ...

  8. hdoj 2063 过山车【匈牙利算法+邻接矩阵or邻接表】

    过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  9. 图结构练习——判断给定图是否存在合法拓扑序列(dfs算法(第一个代码),邻接矩阵(前两个代码),邻接表(第三个代码))

    sdut 2140 图结构练习——判断给定图是否存在合法拓扑序列 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述  给定一个有向图 ...

随机推荐

  1. Lintcode: Sort Colors II

    Given an array of n objects with k different colors (numbered from 1 to k), sort them so that object ...

  2. [原创] 在spring 中使用quarts

    1.使用maven加载 quarts 的jar <dependency> <groupId>org.quartz-scheduler</groupId> <a ...

  3. SQL封装、多态与重载

    面向对象1.类:众多对象抽象出来的2.对象:类实例化出来的 3.类的定义关键字 class 4.类里面包含成员变量成员属性 成员方法 5.面向对象三大特性(1)封装目的:保护类,让类更加安全.做法:让 ...

  4. ibatis学习过程

    ibatis 中map in查询的做法 1:如果传过来的对象就是直接的map数组   list<hashmap<key,value>>的形式  [{1:1},{1:1}}的形式 ...

  5. FRM-92101解决办法

    /u02/UAT/inst/apps/UAT_newerp3/logs/ora/10.1.3/opmn/forms_default_group_1/ http://blog.csdn.net/orth ...

  6. ajax讲解:“创建用户”和“用户登录”练习

    ajax可以在不重新加载整个网页的情况下,对网页的某部分进行更新. 传统的网页(不使用 AJAX)如果需要更新内容,必须重载整个网页页面.   接下来,将以例子的形式进行讲解   例一:创建用户   ...

  7. zw版【转发·台湾nvp系列Delphi例程】HALCON SetMshape

    zw版[转发·台湾nvp系列Delphi例程]HALCON SetMshape procedure TForm1.FormShow(Sender: TObject);var img : HImageX ...

  8. 深入Java核心 探秘Java垃圾回收机制(转自http://edu.21cn.com/java/g_189_859836-1.htm)

    垃圾收集GC(Garbage Collection)是Java语言的核心技术之一,之前我们曾专门探讨过Java 7新增的垃圾回收器G1的新特性,但在JVM的内部运行机制上看,Java的垃圾回收原理与机 ...

  9. Openstack的error僵尸实例的解决办法

    在我们对集群环境进行各种调整的情况下,很容易产生一些僵尸实例. 僵尸实例主要是没有该主机,但是在dashboard上,数据库中存在,解决办法网络上有的人给出了繁杂的修改数据库的方法,其实按照下面的命令 ...

  10. Eclipse启动认定SDK地址,出现Error executing aapt

    我把安卓的SDK安装在D盘,但是新建项目之后,提示的错误是 就是认定在F盘了,可是那个时候我只是在F盘启动了第一次,之后就拷贝到了D盘的, 是不是第一次启动就会注册了什么的呢? 解决方案: 更改你的e ...