你作为某高管去住宿了,然后宾馆里有几种插座,分别有其对应型号,你携带了几种用电器(手机,电脑一类的),也有其对应型号;可是不一定用电器就能和插座匹配上,于是宾馆的商店里提供了一些转换器,这些转换器可以将某一型号电源转换成另一型号的。问,你的用电器最少会有多少种无法充电

源点向电器连边,容量为1,电器向对应的插座连边,容量为1,于转换器,在插座与插座之间连边,容量为inf,所有插座向汇点连边,容量为插座的个数~

#include<cstdio>
#include<algorithm>
#include<queue>
#include<cstring>
#include<map>
#include<iostream>
#include<string>
using namespace std;
const int maxn=;
const int inf=1e9;
queue<int> q;
int n;
int g[maxn][maxn];
int pre[maxn];
int flow[maxn];
int maxflow;
int bfs (int s,int t) {
while (!q.empty()) q.pop();
for (int i=;i<=n;i++) pre[i]=-;
pre[s]=;
q.push(s);
flow[s]=inf;
while (!q.empty()) {
int x=q.front();
q.pop();
if (x==t) break;
for (int i=;i<=n;i++)
if (g[x][i]>&&pre[i]==-) {
pre[i]=x;
flow[i]=min(flow[x],g[x][i]);
q.push(i);
}
}
if (pre[t]==-) return -;
else return flow[t];
}
void Edmonds_Karp (int s,int t) {
int increase=;
while ((increase=bfs(s,t))!=-) {
int k=t;
while (k!=s) {
int last=pre[k];
g[last][k]-=increase;
g[k][last]+=increase;
k=last;
}
maxflow+=increase;
}
}
map<string,int> pos;
int main () {
string s1,s2;
int N,M,cnt,st,ed;
while (~scanf("%d",&N)) {
pos.clear();
memset(g,,sizeof(g));
maxflow=;
st=;
ed=;
cnt=;
while (N--) {
cin>>s1;
pos[s1]=cnt;
g[][cnt++]=;
}
scanf ("%d",&M);
for (int i=;i<M;i++) {
cin>>s1>>s2;
if (pos[s1]==) pos[s1]=cnt++;
if (pos[s2]==) pos[s2]=cnt++;
g[pos[s1]][ed]=;
g[pos[s2]][pos[s1]]=;
}
scanf ("%d",&N);
while (N--) {
cin>>s1>>s2;
if (pos[s1]==) pos[s1]=cnt++;
if (pos[s2]==) pos[s2]=cnt++;
g[pos[s2]][pos[s1]]=inf;
}
n=cnt-;
Edmonds_Karp (st,ed);
printf ("%d\n",M-maxflow);
}
return ;
}

最新文章

  1. Java Swing 第02记 标签和按钮
  2. C语言中的运算符
  3. 使用NetBeans搭建基于Spring框架的Web应用
  4. Delphi 字符数组存入文件
  5. 【leetcode】Linked List Cycle
  6. iOS开发之静态库(三)—— 图片、界面xib等资源文件封装到.a静态库
  7. 布局文件中fill_parent、match_parent和wrap_content有什么区别?
  8. Linux busybox mount -a fstab
  9. (转)实战Memcached缓存系统(1)Memcached基础及示例程序
  10. 重命名计算机名称导致TFS版本管理下的工作区问题的修复
  11. java常用包
  12. java web 之 BeanUtils.populate的作用
  13. 不完全CSS3图解
  14. Sql Server 事物
  15. webpack4.x笔记-配置基本的前端开发环境(一)
  16. log4j控制指定包下的日志
  17. [Swift]JSON字符串与字典(Dictionary)、数组(Array)之间的相互转换
  18. webpack学习笔记——打包js
  19. 大数据spark学习第一周Scala语言基础
  20. go get 的使用

热门文章

  1. 三种方法获取 lua时间戳
  2. VMare安装及虚拟机的安装
  3. Flink流处理(二)- 流处理基本概念
  4. 问题 D: 家庭问题
  5. Go_select
  6. webpack配置的说明
  7. MinGW编译dll并引用
  8. 优酷1080p的kux格式文件怎么转换为MP4格式?
  9. mybatis用mysql数据库自增主键,插入一条记录返回新增记录的自增主键ID
  10. leetCode练题——7. Reverse Integer