UVA - 820 Internet Bandwidth(最大流模板题)
题目:
思路:
直接套最大流的模板就OK了,注意一下输出的格式。
代码:
- #include <bits/stdc++.h>
- #define inf 0x3f3f3f3f
- #define MAX 1000000000
- #define mod 1000000007
- #define FRE() freopen("in.txt","r",stdin)
- #define FRO() freopen("out.txt","w",stdout)
- using namespace std;
- typedef long long ll;
- typedef pair<int,ll> pii;
- const int maxn = ;
- int n;
- struct Edge {
- int from,to,cap,flow;
- Edge(int from,int to,int cap,int flow):from(from),to(to),cap(cap),flow(flow) {}
- };
- struct Dinic {
- int n,m,s,t;
- vector<Edge> edges;
- vector<int> G[maxn];
- bool vis[maxn];
- int d[maxn];
- int cur[maxn];
- void init(){
- for(int i=; i<maxn; i++){
- G[i].clear();
- }
- edges.clear();
- }
- void AddEdge(int from,int to,int cap) {
- edges.push_back(Edge(from,to,cap,));
- edges.push_back(Edge(to,from,,));
- m = edges.size();
- G[from].push_back(m-);
- G[to].push_back(m-);
- }
- bool BFS(){
- memset(vis,,sizeof(vis));
- queue<int>que;
- que.push(s);
- d[s] = ;
- vis[s] = ;
- while(!que.empty()){
- int x = que.front(); que.pop();
- for(int i=; i<G[x].size(); i++){
- Edge& e = edges[G[x][i]];
- if(!vis[e.to] && e.cap>e.flow){
- vis[e.to] = ;
- d[e.to] = d[x]+;
- que.push(e.to);
- }
- }
- }
- return vis[t];
- }
- int DFS(int x,int a){
- if(x == t || a==) return a;
- int flow = ,f;
- for(int i=cur[x]; i<G[x].size(); i++){
- Edge&e = edges[G[x][i]];
- if(d[x]+ == d[e.to] && (f=DFS(e.to,min(a,e.cap-e.flow)))>){
- e.flow += f;
- edges[G[x][i]^].flow -= f;
- flow += f;
- a -= f;
- if(a==) break;
- }
- }
- return flow;
- }
- int MaxFlow(int s,int t){
- this->s = s; this->t = t;
- int flow = ;
- while(BFS()){
- memset(cur,,sizeof(cur));
- flow += DFS(s,inf);
- }
- return flow;
- }
- }dic;
- int main(){
- int kase = ;
- while(scanf("%d",&n) && n){
- dic.init();
- int ss,tt,cc,s,t,c;
- scanf("%d%d%d",&ss,&tt,&cc);
- for(int i=; i<cc; i++){
- scanf("%d%d%d",&s,&t,&c);
- dic.AddEdge(s,t,c);
- dic.AddEdge(t,s,c);
- }
- int ans = dic.MaxFlow(ss,tt);
- printf("Network %d\n",++kase);
- printf("The bandwidth is %d.\n\n",ans);
- }
- return ;
- }
UVA - 820 Internet Bandwidth(最大流模板题)的更多相关文章
- UVA 820 Internet Bandwidth 因特网宽带(无向图,最大流,常规)
题意:给一个无向图,每条边上都有容量的限制,要求求出给定起点和终点的最大流. 思路:每条无向边就得拆成2条,每条还得有反向边,所以共4条.源点汇点已经给出,所以不用建了.直接在图上跑最大流就可以了. ...
- UVA - 820 Internet Bandwidth (因特网带宽)(最大流)
题意:给出所有计算机之间的路径和路径容量后,求出两个给定结点之间的流通总容量.(假设路径是双向的,且两方向流动的容量相同) 分析:裸最大流.标号从1开始,初始化的时候注意. #pragma comme ...
- UVa 820 Internet Bandwidth (裸板网络流)
题意:有一个计算机网络,输入节点数n,输入网络流源点和汇点src,des,再输入双向边数m.给出m条边的负载,求最大流. 析:直接上网络流的最大流. 代码如下: #pragma comment(lin ...
- UVA 820 Internet Bandwidth
题意: 给出双向图,求给出两点的流通总流量. 分析: 网络流中的增广路算法. 代码: #include <iostream>#include <cstring>#include ...
- UVA 820 --- POJ 1273 最大流
找了好久这两个的区别...UVA820 WA了 好多次.不过以后就做模板了,可以求任意两点之间的最大流. UVA 是无向图,因此可能有重边,POJ 1273是有向图,而且是单源点求最大流,因此改模板的 ...
- HDU-3549 最大流模板题
1.HDU-3549 Flow Problem 2.链接:http://acm.hdu.edu.cn/showproblem.php?pid=3549 3.总结:模板题,参考了 http://ww ...
- 【网络流#2】hdu 1533 - 最小费用最大流模板题
最小费用最大流,即MCMF(Minimum Cost Maximum Flow)问题 嗯~第一次写费用流题... 这道就是费用流的模板题,找不到更裸的题了 建图:每个m(Man)作为源点,每个H(Ho ...
- 【网络流#1】hdu 3549 - 最大流模板题
因为坑了无数次队友 要开始学习网络流了,先从基础的开始,嗯~ 这道题是最大流的模板题,用来测试模板好啦~ Edmonds_Karp模板 with 前向星 时间复杂度o(V*E^2) #include& ...
- POJ 1273 - Drainage Ditches - [最大流模板题] - [EK算法模板][Dinic算法模板 - 邻接表型]
题目链接:http://poj.org/problem?id=1273 Time Limit: 1000MS Memory Limit: 10000K Description Every time i ...
随机推荐
- 利用JProfile 7分析内存OOM
今天发现一个OOM问题,想来可能是有部分内存没有正确释放导致的 于是想到了之前使用的JProfile来分析一下 由于大概知道哪个类没有释放,可以在Memory Views里看一下对应的类有多少实例来确 ...
- Ubuntu16.04下搭建开发环境及编译tiny4412 Android系统【转】
本文转载自:http://blog.csdn.net/songze_lee/article/details/72808631 版权声明:本文为博主原创文章,未经博主允许不得转载. 1.安装ssh服务器 ...
- YTU 2697: 血型统计
2697: 血型统计 时间限制: 1 Sec 内存限制: 128 MB 提交: 405 解决: 164 题目描述 黑猫警长在犯罪现场发现了一些血迹,现已经委托检验机构确定了血型,需要统计各种血型的 ...
- ECS服务器配置密钥登录及常用日志
一.介绍 1.SSH(22端口)是Secure Shell Protocol的简写,由IETF网络工作小组(Network Working Group)制定:在进行数据传输之前,SSH先对联机数据包通 ...
- C++中虚析构函数的作用 (转载)
转自:http://blog.csdn.net/starlee/article/details/619827 我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数.可是,为什么要这样做 ...
- bzoj 1677: [Usaco2005 Jan]Sumsets 求和【dp】
设f[i]为i的方案数,f[1]=1,考虑转移,如果是奇数,那么就是f[i]=f[i-1]因为这1一定要加:否则f[i]=f[i-1]+f[i>>1],就是上一位+1或者i/2位所有因子乘 ...
- AMD的规范使用
1.解决命名冲突 2.解决繁琐的文件依赖 3. 可读性.可依赖性 参考这里 // foobar.js // 私有变量 var test = 123: // 公有方法 function foot ...
- Linux之线程相关命令及常用命令
查进程 top命令:查看系统的资源状况.#top top -d 10 //指定系统更新进程的时间为10秒 ps:查看当前用户的活动进程.#ps -A ps命令查找与进程相关的PID号: ps ...
- C#常量知识整理
整数常量 整数常量可以是十进制.八进制或十六进制的常量.前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,没有前缀则表示十进制. 整数常量也可以有后缀,可以是 U 和 L 的组合,其中,U ...
- 所有版本chrome、chromedriver、firefox下载链接
1. 所有版本chrome下载 是不是很难找到老版本的chrome?博主收集了几个下载chrome老版本的网站,其中哪个下载的是原版的就不得而知了. http://www.slimjet.com/ch ...