uva 753(网络流最大流)
网络流最大流问题,这里使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(网络流最大流)相关推荐
- POJ - 3614 Sunscreen(贪心/二分图最大匹配-多重匹配/网络流-最大流)
题目链接:点击查看 题目大意:给出n头奶牛,奶牛们现在要晒太阳,每头奶牛需要[l,r]区间内的光照强度,现在有m种防晒霜,每种防晒霜可以让奶牛接受到val数值的光照强度,然后每种防晒霜只有num个,现 ...
- 【bzoj1532】[POI2005]Kos-Dicing 二分+网络流最大流
题目描述 Dicing 是一个两人玩的游戏,这个游戏在Byteotia非常流行. 甚至人们专门成立了这个游戏的一个俱乐部. 俱乐部的人时常在一起玩这个游戏然后评选出玩得最好的人.现在有一个非常不走运的 ...
- 【图论】网络流——最大流和最小费用流
[图论]网络流--最大流和最小费用流 文章目录 [图论]网络流--最大流和最小费用流 1. 最大流问题 1.1 基本概念 1.2 寻求最大流的算法(Ford-Fulerson) 1.3 matlab求 ...
- 网络流最大流初步-Push–relabel maximum flow algorithm
简介 做网络流最大流的题,常用的算法就是Dinic's algorithm.时间复杂度为,通常由于出题人水平较低,几乎能过所有的题.功利地看,这样就没问题了.但是,站在追求真(zhuang)理(B)的 ...
- (通俗易懂小白入门)网络流最大流——EK算法
网络流 网络流是模仿水流解决生活中类似问题的一种方法策略,来看这么一个问题,有一个自来水厂S,它要向目标T提供水量,从S出发有不确定数量和方向的水管,它可能直接到达T或者经过更多的节点的中转,目前确定 ...
- 网络流——最大流EK算法讲解
网络流--最大流EK算法讲解 好了,这是第二篇博客了,如第一篇所述,来讲一讲刚刚理解的网络流.因为本人只会EK算法,所以先讲这个算法.(我会去补知识点的!!!) 什么是网络流??? 读者们刚接触这个知 ...
- 图论-网络流⑦-费用流解题
图论-网络流⑦-费用流解题 上一篇:图论-网络流⑥-费用流 下一篇:图论-网络流⑧-有上下界的网络流 参考文献: https://www.luogu.com.cn/blog/user9012/solu ...
- UVA 753 A Plug for UNIX (最大流)
关键在建图,转换器连一条容量无限的边表示可以转化无数次,设备的插头连源点,插座连汇点. dinic手敲已熟练,输出格式又被坑,总结一下,输出空行多case的,一个换行是必要的,最后一个不加空行,有Te ...
- UVA - 753 A Plug for UNIX(网络流)
题意 给定一些插头设备和插座,有一些方法可以把其中一些插头变成另一种插头.求无法匹配插座的插头设备个数. 题解 用\(map\)给每个字符串标号为\(a_i\)和\(b_i\). 读入每种改变插头的方 ...
最新文章
- EventBus源码解析
- ARTS打卡计划第一周-Share-系统字典模块的设计
- SpringBoot中@EnableAutoConfiguration注解的作用
- 博弈入门(思想)HDkiki‘s game;
- VTK:邻接矩阵到 EdgeTable用法实战
- 物联网常用的组网方式浅析
- 【Python CheckiO 题解】All the Same
- c++编程求解二元二次方程组_一道俄罗斯高难度解方程组题,错误率达99%+,中国学霸:确实很难...
- 程序员自学软件编程开发的“3 个技巧”,掌握好,菜鸟变大神
- 怎么删除服务器的ibd文件,mysql数据库ibd文件
- 在vue项目中使用阿里云播放器
- Redis(基于狂神说Java-Redis)
- [nk] 糟糕的打谱员 线性DP
- 大数据和区块链技术是什么关系?
- Python取代VB/VBA,弄了个寂寞!
- 世界上最贵的跑车大全
- 知乎问答推广怎么做,知乎问答营销技巧
- cms php vue 开源_lucms —— 基于 Vue 和 Laravel 开发的后台管理系统
- Unity资源打包之Asset Bundle(学习笔记)
- android 展开菜单,Android之可收缩展开列表ExpandableList
热门文章
- Echarts与Highcharts的比较
- Windows Server 2012 下安装MySQL 5.6 X64位包
- hdu 1286 找新朋友 欧拉函数模版题
- mysql for windows zip版安装
- android小知识之意图(intent)
- [Win32]一个调试器的实现(二)调试事件的处理
- 12 | 套路篇:CPU 性能优化的几个思路
- 07 | 案例篇:系统中出现大量不可中断进程和僵尸进程怎么办?(上)
- java多线程同步与死锁,廖雪峰Java11多线程编程-2线程同步-3死锁
- Linux 系统之软件管理