Control HDU
来源:互联网 发布:金立手机系统优化 编辑:程序博客网 时间:2024/06/04 19:42
题目链接: Control HDU - 4289
题目大意
一张无向图, n个顶点, m条边, 现在要去除某些顶点, 使得节点s和节点d之间没有任何路径相连, 每个顶点有一个cost, 去除这个顶点的花费, 求最小花费
思路
将每个顶点v拆成两个顶点
代码
#include <bits/stdc++.h>using namespace std;const int MAXV = 500, INF = 0X3F3F3F3F;struct edge{ int to, cap, rev; edge(int a, int b, int c) :to(a), cap(b), rev(c){}};vector<edge> G[MAXV];int iter[MAXV], level[MAXV], S, T;void init(){ for(int i=0; i<MAXV; ++i) G[i].clear();}void add_edge(int from, int to, int cap){ G[from].push_back(edge(to, cap, G[to].size())); G[to].push_back(edge(from, 0, G[from].size()-1));}bool bfs(){ memset(level, -1, sizeof(level)); level[S] = 0; queue<int> que; que.push(S); while(!que.empty()) { int v = que.front(); que.pop(); for(int i=0; i<(int)G[v].size(); ++i) { edge &e = G[v][i]; if(e.cap>0 && level[e.to]==-1) { level[e.to] = level[v] + 1; que.push(e.to); } } } return level[T]!=-1;}int dfs(int v, int f){ if(v == T) return f; for(int &i=iter[v]; i<(int)G[v].size(); ++i) { edge &e = G[v][i]; if(e.cap>0 && level[e.to]>level[v]) { int d = dfs(e.to, min(f, e.cap)); if(d) { e.cap -= d; G[e.to][e.rev].cap+= d; return d; } } } return 0;}int max_flow(){ int flow = 0; while(bfs()) { memset(iter, 0, sizeof(iter)); int f; while((f=dfs(S, INF))) flow += f; } return flow;}int n, m, s, d;int main(){ while(scanf("%d%d", &n, &m) == 2) { init(); scanf("%d%d", &s, &d); S = s-1; T = n+d-1; int c; for(int i=0; i<n; ++i) { scanf("%d", &c); add_edge(i, i+n, c); } int a, b; for(int i=0; i<m; ++i) { scanf("%d%d", &a, &b); a--, b--; add_edge(a+n, b, INF); add_edge(b+n, a, INF); } printf("%d\n", max_flow()); } return 0;}
阅读全文
0 0
- Control HDU
- Control HDU
- hdu 2871 Memory Control
- hdu 2871 Memory Control
- hdu 2871 Memory Control
- hdu 4289 Control
- HDU 4289 Control
- hdu 4289 Control
- HDU 2871 Memory Control
- HDU 4289 Control
- HDU-2871-Memory Control
- hdu 2871 Memory Control
- HDU 2871 Memory Control
- HDU-4289 Control
- HDU 4289 Control
- hdu - 4345 - Memory Control - 数论
- 最大流:HDU-4289(CONTROL)
- 【HDU】4289 Control 最大流
- Sabotage UVA
- CSS+JS实现简单的时钟
- 《Hadoop生态》——第二章 数据库与数据管理——MongoDB
- Vs2010发布Asp.Net网站及挂到IIS服务上
- GC总结
- Control HDU
- XML文件读写-libxml2-2.7.8.win32
- 暑期项目开发实训 Day13
- 变态跳台阶
- win7中操作并访问本地虚拟机(Centos7)
- 线程安全与可重入函数的对比
- 数论与积性函数
- 学习笔记之Tensorflow Line Model Tutorial (tf.learn人口普查二分类)
- 1.计算机概述