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 ...
随机推荐
- 加密散列算法——SHA-1
与MD5算法类似,SHA-1算法也是在接收到消息后产生消息摘要,能够用来验证数据的完整性. 不同的是SHA1会产生一个160位的消息摘要(MD5产生的是128位). 其它的性质之类的不多说(请參考前面 ...
- 简易 DBUtil 封装
Dao包结构图: 1.首先连接数据库 package com.util.db; import java.sql.Connection; import java.sql.DriverManager; i ...
- java操作linux,调用shell命令
import org.junit.jupiter.api.Test; import java.io.BufferedReader; import java.io.IOException; import ...
- MySQL 基础 —— 数据类型、各种变量
1. 基本数据类型 char:prod_id char(10),括号内的内容表示字符的长度 decimal:十进制,不带参数为整数(四舍五入) text:文本类型,长度不限 2. 日期和时间处理函数 ...
- 蓝书4.1-4.4 树状数组、RMQ问题、线段树、倍增求LCA
这章的数据结构题很真实 T1 排队 bzoj 1699 题目大意: 求静态一些区间的最大值-最小值 思路: ST表裸题 #include<iostream> #include<cst ...
- 通过usb访问mtp设备(ubuntu12.04) (转载)
转自:http://robert.penz.name/658/howto-access-mtp-devices-via-usb-on-ubuntu-12-04/ A friend asked me h ...
- 靶形数独 2009年NOIP全国联赛提高组(搜索)
靶形数独 2009年NOIP全国联赛提高组 时间限制: 4 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 小城和小华都是热爱数 ...
- “仿QQ局域网聊天软件”项目-常用编程技巧总结
1 信号槽篇 qqLogin loginDialog; QQ mainDialog; loginDialog.show(); //连接登陆窗口和主窗口 QObject::connect(&lo ...
- Hdu 5285 wyh2000 and pupil (bfs染色判断奇环) (二分图匹配)
题目链接: BestCoder Round #48 ($) 1002 题目描述: n个小朋友要被分成两班,但是有些小朋友之间是不认得的,所以规定不能把不认识的小朋友分在一个班级里面,并且一班的人数要比 ...
- C#方法的一些规则
C# 方法 一个方法是把一些相关的语句组织在一起,用来执行一个任务的语句块.每一个 C# 程序至少有一个带有 Main 方法的类. 要使用一个方法,您需要: 定义方法 调用方法 下面是方法的各个元素: ...