uva 10330 - Power Transmission(网络流)
uva 10330 - Power Transmission
题目大意:最大流问题。
解题思路:増广路算法。
#include <stdio.h>
#include <string.h>
#include <queue> using namespace std; #define min(a,b) (a)<(b)?(a):(b) const int N = 105;
const int INF = 0x3f3f3f3f; int n, s[N], g[N][N], f[N][N]; void init() {
memset(s, 0, sizeof(s));
memset(g, INF, sizeof(g));
memset(f, INF, sizeof(f)); for (int i = 1; i <= n; i++)
scanf("%d", &s[i]); int a, b, c, t;
scanf("%d", &t);
for (int i = 0; i < t; i++) {
scanf("%d%d%d", &a, &b, &c);
g[a][b] = min(g[a][b], c);
f[a][b] = 0;
} scanf("%d%d", &a, &b);
for (int i = 0; i < a; i++) {
scanf("%d", &c);
g[0][c]--;
f[0][c] = 0;
} for (int i = 0; i < b; i++) {
scanf("%d", &c);
g[c][n + 1]--;
f[c][n + 1] = 0;
}
} int solve() {
n++;
s[n] = INF;
int a[N], vis[N];
int ans = 0;
queue<int> q; while (1) { memset(vis, 0, sizeof(vis));
memset(a, 0, sizeof(a)); int c = 0, t; vis[c] = 0;
a[c] = INF;
q.push(c); while (!q.empty()) { c = q.front(), q.pop(); for (int i = 1; i <= n; i++) { if (g[c][i] == INF) continue;
t = min(g[c][i] - f[c][i], min(a[c], s[i])); if (t > a[i]) {
vis[i] = c;
a[i] = t;
q.push(i);
}
}
} if (a[n] == 0) break;
ans += a[n]; for (int i = n; i; i = vis[i]) { s[i] -= a[n];
f[vis[i]][i] += a[n];
}
}
return ans;
} int main () { while (scanf("%d", &n) == 1) { init();
printf("%d\n", solve());
}
return 0;
}
uva 10330 - Power Transmission(网络流)的更多相关文章
- UVa 10330 - Power Transmission(最大流--拆点)
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
- UVA 10330 Power Transmission
题意:懒得打了.LUCKY CAT 里有 http://163.32.78.26/homework/q10330.htm 第一个网络流题目.每个节点都有一个容量值.需要拆点.拆成i - > i ...
- UVa 10330 Power Transmission / 最大流
最大流 这题有很多起点和终点 在取2个点(0和n+1) 作为唯一的起点和终点 此外每个点也有容量限制 建图时每条边上的容量为这条边和2个端的容量的最小值 然后EK就行 #include <cst ...
- light oj 1155 - Power Transmission【拆点网络流】
1155 - Power Transmission PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 ...
- UVA 10480 Sabotage (网络流,最大流,最小割)
UVA 10480 Sabotage (网络流,最大流,最小割) Description The regime of a small but wealthy dictatorship has been ...
- UVA 11149 - Power of Matrix(矩阵乘法)
UVA 11149 - Power of Matrix 题目链接 题意:给定一个n*n的矩阵A和k,求∑kiAi 思路:利用倍增去搞.∑kiAi=(1+Ak/2)∑k/2iAi,不断二分就可以 代码: ...
- C2. Power Transmission (Hard Edition)(线段相交)
This problem is same as the previous one, but has larger constraints. It was a Sunday morning when t ...
- C2. Power Transmission (Hard Edition) 解析(思維、幾何)
Codeforce 1163 C2. Power Transmission (Hard Edition) 解析(思維.幾何) 今天我們來看看CF1163C2 題目連結 題目 給一堆點,每兩個點會造成一 ...
- UVa 11082 Matrix Decompressing - 网络流
开始眨眼一看怎么也不像是网络流的一道题,再怎么看也觉得像是搜索.不过虽然这道题数据范围很小,但也不至于搜索也是可以随随便便就可以过的.(不过这道题应该是special judge,因为一题可以多解而且 ...
随机推荐
- hdu1867之KMP
A + B for you again Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- 【转】Configuring VM Acceleration on Linux
Configuring VM Acceleration on Linux Linux-based systems support virtual machine acceleration throug ...
- if语句之猜拳
用计算机来生成随机数: Random rand = new Random();//做一个随机生成器,Random();后面的括号里面可以放一个随机生成器种子,这个种子只能为整数(int)int n = ...
- 五毛的cocos2d-x学习笔记05-场景与场景动画,动作
场景切换函数: Director->getInstance()->replaceScene(Scene*); Director->getInstance()->runWithS ...
- 子进程管理模块subprocess
subprocess模块允许你生成子进程,连接管道,并获取返回的代码. 一.使用subprocess模块 模块中定义了一个Popen类: subprocess.Popen(args, bu ...
- jsp中的jquery失效以及引入js失败的问题
这段时间在试着看公司用的框架是怎么写的,看到项目中对jquery进一步封装的这一部分,所以自己试着写一些demo来模仿框架中的用法. 再一次的,又遇到了一个问题,jsp中引入js的问题,好久没有自己从 ...
- 简单的webservice
Hi,大家好! 今天主要和大家分享,如何搭建一个Web服务,做Android开发,不可避免会涉及到客户端开发,我们怎么样来实现一个服务端,怎么样来实现一个客户端,并相互传递数据.就算调用别人的服务时, ...
- python3.4.3如何获取文件的路径
#coding:utf-8from tkinter import *from tkinter import filedialogroot = Tk()root.filename = filedialo ...
- hdu 4790 Just Random 神奇的容斥原理
/** 大意: 给定[a,b],[c,d] 在这两个区间内分别取一个x,y 使得 (x+y)%p = m 思路:res = f(b,d) -f(b,c-1)-f(a-1,d)+f(a-1,c-1); ...
- linux 内核分析之list_head
转自:http://www.cnblogs.com/riky/archive/2006/12/28/606242.html 一.链表数据结构简介 链表是一种常用的组织有序数据的数据结构,它通过指针将一 ...