HDU 3879 Base Station
2013-11-01 22:07
309 查看
题意:有n个城市。现在需要在这些城市上修一些通信的基站,在每个城市上修一个基站都需要花费一定的费用。另外给出m个组合(a,b,c),表示如果第a个城市和第b个城市都修起了基站,那么公司可以获利c。但公司并不需要在每个城市都修基站,他们只希望自己能够获得最大的利益。问最大利益。
裸的最大闭合子图吧。只要知道这个模型就是水题。
View Code
裸的最大闭合子图吧。只要知道这个模型就是水题。
#include <cstdio> #include <cstring> #include <queue> #include <algorithm> #define INF 1<<30 #define maxn 55010 #define maxm 400000 using namespace std; int v[maxm],next[maxm],w[maxm]; int first[maxn],d[maxn],q[maxn],work[maxn]; int e,S,T; void init(){ e = 0; memset(first,-1,sizeof(first)); } void add_edge(int a,int b,int c){ v[e] = b;next[e] = first[a];w[e] = c;first[a] = e++; v[e] = a;next[e] = first[b];w[e] = 0;first[b] = e++; } int bfs(){ int rear = 0; memset(d,-1,sizeof(d)); d[S] = 0;q[rear++] = S; for(int i = 0;i < rear;i++){ for(int j = first[q[i]];j != -1;j = next[j]) if(w[j] && d[v[j]] == -1){ d[v[j]] = d[q[i]] + 1; q[rear++] = v[j]; if(v[j] == T) return 1; } } return 0; } int dfs(int cur,int a){ if(cur == T) return a; for(int &i = work[cur];i != -1;i = next[i]){ if(w[i] && d[v[i]] == d[cur] + 1) if(int t = dfs(v[i],min(a,w[i]))){ w[i] -= t;w[i^1] += t; return t; } } return 0; } int dinic(){ int ans = 0; while(bfs()){ memcpy(work,first,sizeof(first)); while(int t = dfs(S,INF)) ans += t; } return ans; } int main(){ int n,m; while(scanf("%d%d",&n,&m) == 2){ init(); S = 0,T = n+m+1; int sum = 0; for(int i = 1;i <= n;i++){ int tmp; scanf("%d",&tmp); add_edge(i,T,tmp); } for(int i = 1;i <= m;i++){ int a,b,c; scanf("%d%d%d",&a,&b,&c); sum += c; add_edge(S,i+n,c); add_edge(i+n,a,INF); add_edge(i+n,b,INF); } printf("%d\n",sum - dinic()); } }
View Code
相关文章推荐
- 【HDU】3879 Base Station 最大权闭合子图
- hdu 3879 Base Station【最大权闭包--最大流Dinic】
- hdu 3879 Base Station 网络流 最大权闭合图
- HDU 3879 Base Station 最大权闭合图
- Base Station HDU - 3879(最大权闭合子图)
- HDU 3879 Base Station 最大权闭包 2011 Multi-University Training Contest 5 - Host by BNU
- HDU 3879 Base Station 网络流(经典题)
- hdu 3879 Base Station【最大权闭合图】
- HDU 3879 Base Station
- hdu 3879 Base Station bzoj 1497 最大获利问题 最大权闭合子图
- HDU 3879 Base Station【最大权闭包】
- hdu 3879 Base Station (最大权闭合图)
- HDU 3879 Base Station 最小割
- HDU 3879 Base Station
- HDU 3879 Base Station 最大权闭合图
- HDU 3879 Base Station 最大权闭合图
- 最大权闭合图 hdu 3879 Base Station 有模板!
- HDU 3879 Base Station 最大权闭合图
- HDU 3879 Base Station 最大权闭合子图
- HDU 3879 Base Station 最小割模型 最大权闭合图