POJ 1087
#include<iostream>
#include<stdio.h>
#include<string>
#define MAXN 105
using namespace std;
struct unix
{
string s1;
string s2;
};
bool ck[MAXN];
int _m[MAXN][MAXN];
int match[MAXN];
string rec[MAXN];
unix dev[MAXN];
unix adap[MAXN];
bool mark_adap[MAXN];
int hungary(int a,int b);
int a;
int b;
int c; void For_adap(int i);
void make_map();
int main()
{
//freopen("acm.acm","r",stdin);
int i;
int j;
int u;
int v;
int edge;
cin>>a;
for(i = ; i < a; ++ i)
{
cin>>rec[i];
}
cin>>b;
for(i = ; i < b; ++ i)
{
cin>>dev[i].s1;
cin>>dev[i].s2;
}
cin>>c;
for(i = ; i < c; ++ i)
{
cin>>adap[i].s1;
cin>>adap[i].s2;
}
memset(_m,,sizeof(_m));
make_map();
//for(i = 0; i < b; ++ i)
//{
// for(j = 0; j < a; ++ j)
//. {
//\ if(_m[i][j] == 1)
// cout<<dev[i].s1<<"---->"<<rec[j]<<endl;
// }
//}
cout<<b-hungary(b,a)<<endl;
} void make_map()
{
int i;
int j;
for(i = ; i < b; ++ i)
{
memset(mark_adap,false,sizeof(mark_adap));
for(j = ; j < a; ++ j)
{
if(dev[i].s2 == rec[j])
_m[i][j] = ;
}
For_adap(i);
}
} void For_adap(int i)
{
int j;
int k;
string tem;
for(j = ; j < c; ++ j)
{
if(dev[i].s2 == adap[j].s1 && !mark_adap[j])
{
mark_adap[j] = true;
for(k = ; k < a; ++ k)
{
if(rec[k] == adap[j].s2)
{
_m[i][k] = ;
}
}
tem = dev[i].s2;
dev[i].s2 = adap[j].s2;
For_adap(i);
dev[i].s2 = tem;
}
}
} ///////////////////////////////////////////////////
//hungary—by myself
///////////////////////////////////////////////////
bool search(int a,int b,int x)
{
int i;
int t;
for ( i = ; i < b ; i++)
if (_m[x][i] && ! ck[i])
{
ck[i] = true;
t = match[i];
match[i] = x;
if (t == - || search(a,b,t))
return true;
match[i] = t;
}
return false;
} int hungary(int a,int b)
{
memset(match,-,sizeof(match));
int max_match = ;
int i;
for ( i = ; i < a ; i++)
{
memset(ck,false,sizeof(ck));
if (search(a,b,i)) max_match++;
}
return max_match;
}
关注我的公众号,当然,如果你对Java, Scala, Python等技术经验,以及编程日记,感兴趣的话。
技术网站地址: vmfor.com
POJ 1087的更多相关文章
- POJ 1087 A Plug for UNIX / HDU 1526 A Plug for UNIX / ZOJ 1157 A Plug for UNIX / UVA 753 A Plug for UNIX / UVAlive 5418 A Plug for UNIX / SCU 1671 A Plug for UNIX (网络流)
POJ 1087 A Plug for UNIX / HDU 1526 A Plug for UNIX / ZOJ 1157 A Plug for UNIX / UVA 753 A Plug for ...
- poj 1087 A Plug for UNIX 【最大流】
题目连接:http://poj.org/problem? id=1087 题意: n种插座 ,m个电器,f组(x,y)表示插座x能够替换插座y,问你最多能给几个电器充电. 解法:起点向插座建边,容量1 ...
- (网络流 模板)A Plug for UNIX -- poj -- 1087
链接: http://poj.org/problem?id=1087 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82835#probl ...
- kuangbin专题专题十一 网络流 POJ 1087 A Plug for UNIX
题目链接:https://vjudge.net/problem/POJ-1087 题目:有n个插座,插座上只有一个插孔,有m个用电器,每个用电器都有插头,它们的插头可以一样, 有k个插孔转化器, a ...
- poj 1087 最大流
没啥好说的,慢慢建图 Sample Input 4 A B C D 5 laptop B phone C pager B clock B comb X 3 B X X A X D Sample Out ...
- poj 1087 A Plug for UNIX
题目描述:现在由你负责布置Internet联合组织首席执行官就职新闻发布会的会议室.由于会议室修建时被设计成容纳全世界各地的新闻记者,因此会议室提供了多种电源插座用以满足(会议室修建时期)各国不同插头 ...
- poj 1087 C - A Plug for UNIX 网络流最大流
C - A Plug for UNIXTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contes ...
- poj 1087.A Plug for UNIX (最大流)
网络流,关键在建图 建图思路在代码里 /* 最大流SAP 邻接表 思路:基本源于FF方法,给每个顶点设定层次标号,和允许弧. 优化: 1.当前弧优化(重要). 1.每找到以条增广路回退到断点(常数优化 ...
- C - A Plug for UNIX - poj 1087(最大流)
题目大意:这个题意有些蛋疼,看了很大会才明白什么意思,有N个插座,这些插座都是有类型的只能给这种类型的电器充电,下面接着给了M种电器,和电器的插头类型,还有K种转换器,可以把一种类型转换成另一种,转换 ...
- POJ 1087 A Plug for UNIX (网络流,最大流)
题面 You are in charge of setting up the press room for the inaugural meeting of the United Nations In ...
随机推荐
- 2018.10.14 loj#516. DP 一般看规律(启发式合并)
传送门 注意到一种颜色改了之后就不能改回去了. 因此可以启发式合并. 每次把小的合并给大的. 这样每个数最多被合并logloglog次. 如果维护一棵比较下标的平衡树的话,对于答案有贡献的就是每个数与 ...
- 22. Valuing Water 珍惜水资源
. Valuing Water 珍惜水资源 ① Humanity uses a little less than half the water available worldwide.Yet occu ...
- 17 Privacy Lost:Dose Anybody Care ? 失去隐私,有人在乎吗 ?
Privacy Lost:Dose Anybody Care ? 失去隐私,有人在乎吗 ? ①Someday a stranger will read your e-mail without your ...
- IntelliJ IDEA 2017版 spring-boot 报错Consider defining a bean of type 'xxx' in your configuration问题解决方案
问题分析: 通过问题的英文可知,这个错误是service的bean注入失败,那么为什么会产生这个问题呢? 主要是框架的Application产生的,所以我们建立项目的时候,要保证项目中的类跟Appli ...
- noip第11课作业
1. 数字比较 定义一个函数check(n,d),让它返回一个布尔值,如果数字d在正整数n的某位中出现则返回true,否则返回false. 例如:check(325719,3)==true:ch ...
- hdu 1284 钱币兑换
题目 我们用dp[n]表示用这些硬币组成n的方法总数.... 然后随着硬币种类的增加来更新dp[]的值,也就是最外面的一层循环for(i :1-->3)开始初始化的时候没有硬币,然后新来了面值为 ...
- hdu 5017 模拟退火/三分求椭圆上离圆心最近的点的距离
http://acm.hdu.edu.cn/showproblem.php?pid=5017 求椭圆上离圆心最近的点的距离. 模拟退火和三分套三分都能解决 #include <cstdio> ...
- windows eclipse IDE打开当前类所在文件路径
1. 展开如下菜单: Run ---- External Tools ---- External Tools Configurations 2. 在 program 下面新建一个工具 program- ...
- EBS FORM 编译
http://www.cnblogs.com/quanweiru/archive/2013/01/01/2841574.html EBS R11============================ ...
- Leader Election 选举算法
今天讲一讲分布式系统中必不可少的选举算法. leader 就是一堆服务器中的协调者,某一个时刻只能有一个leader且所有服务器都承认这个leader. leader election就是在一组进程中 ...