网络流最大流问题,这里使s=0,使s与所有的插头相连,最大通量为1,然后插头和转换器相连,最大通量为1,转换器和转换器相连,因为有无限个,所以为inf,然后转换器和插座连,最大通量为1,插座和t相连,最大通量为1,注意这里的插头插座都是string,不是char,比如插头可以是AB(我日李赖赖,写了我一上午!!!!!

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <queue>
#include <vector>
using namespace std;
const int maxm=1000+10;
const int inf=0x3f3f3f3f;
string c[maxm],a[maxm];
struct note1
{string c1,c2;
};
struct note
{int fr,to,c,f;note(int a,int b,int x,int y):fr(a),to(b),c(x),f(y) {}
};
struct Karp
{vector<note> aa;vector<int> g[maxm];int a[maxm],p[maxm];void init(int n){for(int i=0; i<n; i++)g[i].clear();aa.clear();}void addedge(int x,int y,int z){aa.push_back(note(x,y,z,0));aa.push_back(note(y,x,0,0));int mm=aa.size();g[x].push_back(mm-2);g[y].push_back(mm-1);}int maxflow(int s,int t){int flow=0;while(1){memset(a,0,sizeof(a));queue<int> q;q.push(s);a[s]=inf;while(q.size()){int x=q.front();q.pop();for(int i=0; i<g[x].size(); i++){note &e=aa[g[x][i]];if(!a[e.to]&&(e.c>e.f)){a[e.to]=min(a[x],e.c-e.f);p[e.to]=g[x][i];q.push(e.to);}}if(a[t]) break;}if(!a[t]) break;for(int i=t; i!=s; i=aa[p[i]].fr){aa[p[i]].f+=a[t];aa[p[i]^1].f-=a[t];}flow+=a[t];}return flow;}};
Karp mmp;
note1 b[maxm];
int t,n,m,k;
int main()
{scanf("%d",&t);while(t--){mmp.init(1000);scanf("%d",&n);for(int i=0; i<n; i++)cin >> c[i];scanf("%d",&m);string aa;for(int i=0; i<m; i++)cin>> aa >> a[i];scanf("%d",&k);for(int i=0; i<k; i++){cin >> b[i].c1 >> b[i].c2;}for(int i=0; i<m; i++){mmp.addedge(0,i+1,1);for(int j=0; j<k; j++){if(b[j].c1==a[i]){mmp.addedge(i+1,m+j+1,1);}}for(int j=0; j<n; j++)if(a[i]==c[j]) mmp.addedge(i+1,m+k+j+1,1);}for(int i=0; i<k; i++){for(int j=0; j<n; j++)if(b[i].c2==c[j]){mmp.addedge(m+i+1,m+k+j+1,1);}for(int j=0; j<k; j++)if(i!=j&&b[i].c2==b[j].c1){mmp.addedge(m+i+1,m+j+1,inf);}}int hh=m+k+n+1;for(int i=0; i<n; i++){int zz=m+k+i+1;mmp.addedge(zz,hh,1);}printf("%d\n",m-mmp.maxflow(0,hh));if(t) printf("\n");}return 0;
}

转载于:https://www.cnblogs.com/Wangwanxiang/p/7284358.html

uva 753(网络流最大流)相关推荐

  1. POJ - 3614 Sunscreen(贪心/二分图最大匹配-多重匹配/网络流-最大流)

    题目链接:点击查看 题目大意:给出n头奶牛,奶牛们现在要晒太阳,每头奶牛需要[l,r]区间内的光照强度,现在有m种防晒霜,每种防晒霜可以让奶牛接受到val数值的光照强度,然后每种防晒霜只有num个,现 ...

  2. 【bzoj1532】[POI2005]Kos-Dicing 二分+网络流最大流

    题目描述 Dicing 是一个两人玩的游戏,这个游戏在Byteotia非常流行. 甚至人们专门成立了这个游戏的一个俱乐部. 俱乐部的人时常在一起玩这个游戏然后评选出玩得最好的人.现在有一个非常不走运的 ...

  3. 【图论】网络流——最大流和最小费用流

    [图论]网络流--最大流和最小费用流 文章目录 [图论]网络流--最大流和最小费用流 1. 最大流问题 1.1 基本概念 1.2 寻求最大流的算法(Ford-Fulerson) 1.3 matlab求 ...

  4. 网络流最大流初步-Push–relabel maximum flow algorithm

    简介 做网络流最大流的题,常用的算法就是Dinic's algorithm.时间复杂度为,通常由于出题人水平较低,几乎能过所有的题.功利地看,这样就没问题了.但是,站在追求真(zhuang)理(B)的 ...

  5. (通俗易懂小白入门)网络流最大流——EK算法

    网络流 网络流是模仿水流解决生活中类似问题的一种方法策略,来看这么一个问题,有一个自来水厂S,它要向目标T提供水量,从S出发有不确定数量和方向的水管,它可能直接到达T或者经过更多的节点的中转,目前确定 ...

  6. 网络流——最大流EK算法讲解

    网络流--最大流EK算法讲解 好了,这是第二篇博客了,如第一篇所述,来讲一讲刚刚理解的网络流.因为本人只会EK算法,所以先讲这个算法.(我会去补知识点的!!!) 什么是网络流??? 读者们刚接触这个知 ...

  7. 图论-网络流⑦-费用流解题

    图论-网络流⑦-费用流解题 上一篇:图论-网络流⑥-费用流 下一篇:图论-网络流⑧-有上下界的网络流 参考文献: https://www.luogu.com.cn/blog/user9012/solu ...

  8. UVA 753 A Plug for UNIX (最大流)

    关键在建图,转换器连一条容量无限的边表示可以转化无数次,设备的插头连源点,插座连汇点. dinic手敲已熟练,输出格式又被坑,总结一下,输出空行多case的,一个换行是必要的,最后一个不加空行,有Te ...

  9. UVA - 753 A Plug for UNIX(网络流)

    题意 给定一些插头设备和插座,有一些方法可以把其中一些插头变成另一种插头.求无法匹配插座的插头设备个数. 题解 用\(map\)给每个字符串标号为\(a_i\)和\(b_i\). 读入每种改变插头的方 ...

最新文章

  1. EventBus源码解析
  2. ARTS打卡计划第一周-Share-系统字典模块的设计
  3. SpringBoot中@EnableAutoConfiguration注解的作用
  4. 博弈入门(思想)HDkiki‘s game;
  5. VTK:邻接矩阵到 EdgeTable用法实战
  6. 物联网常用的组网方式浅析
  7. 【Python CheckiO 题解】All the Same
  8. c++编程求解二元二次方程组_一道俄罗斯高难度解方程组题,错误率达99%+,中国学霸:确实很难...
  9. 程序员自学软件编程开发的“3 个技巧”,掌握好,菜鸟变大神
  10. 怎么删除服务器的ibd文件,mysql数据库ibd文件
  11. 在vue项目中使用阿里云播放器
  12. Redis(基于狂神说Java-Redis)
  13. [nk] 糟糕的打谱员 线性DP
  14. 大数据和区块链技术是什么关系?
  15. Python取代VB/VBA,弄了个寂寞!
  16. 世界上最贵的跑车大全
  17. 知乎问答推广怎么做,知乎问答营销技巧
  18. cms php vue 开源_lucms —— 基于 Vue 和 Laravel 开发的后台管理系统
  19. Unity资源打包之Asset Bundle(学习笔记)
  20. android 展开菜单,Android之可收缩展开列表ExpandableList

热门文章

  1. Echarts与Highcharts的比较
  2. Windows Server 2012 下安装MySQL 5.6 X64位包
  3. hdu 1286 找新朋友 欧拉函数模版题
  4. mysql for windows zip版安装
  5. android小知识之意图(intent)
  6. [Win32]一个调试器的实现(二)调试事件的处理
  7. 12 | 套路篇:CPU 性能优化的几个思路
  8. 07 | 案例篇:系统中出现大量不可中断进程和僵尸进程怎么办?(上)
  9. java多线程同步与死锁,廖雪峰Java11多线程编程-2线程同步-3死锁
  10. Linux 系统之软件管理