poj 2135 Farm Tour
来源:互联网 发布:网络建设方案 编辑:程序博客网 时间:2024/05/14 20:44
http://poj.org/problem?id=2135
此题中的费用是路径长度,流量是经过的点的数目(流量越大对应于更好地参观农场),因此是一个最小费用最大流问题,使用SPFA来求解。
AC代码:
#include <queue>#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>using namespace std;const int MAXN = 1010;const int MAXM = 1000010;const int INF = 0x3f3f3f3f;int sumFlow,S,T,n,m;int NE,head[MAXN],dis[MAXN],pre[MAXN],vis[MAXN];struct edge{int u,v,c,w;int next;}node[MAXM<<2];void Init(){NE = 0;memset(head, -1, sizeof(head));}void addedge(int u, int v, int c, int w){//前向弧与后向弧node[NE].v = v;node[NE].u = u;node[NE].c = c;node[NE].w = w;node[NE].next = head[u];head[u] = NE++; node[NE].v = u;node[NE].u = v;node[NE].c = 0;node[NE].w = -w;node[NE].next = head[v];head[v] = NE++;}bool SPFA(){queue <int> Q;memset(vis, 0, sizeof(vis));memset(pre, -1, sizeof(pre));memset(dis, 0x3f, sizeof(dis));vis[S] = 1, dis[S] = 0;Q.push(S);while(!Q.empty()){int u = Q.front();Q.pop();vis[u] = 0;for(int i=head[u]; i!=-1; i=node[i].next){int v = node[i].v;if(node[i].c > 0 && dis[v] > dis[u] + node[i].w){dis[v] = dis[u] + node[i].w;pre[v] = i;if(!vis[v]){Q.push(v);vis[v] = 1;}}}}if(dis[T] == INF) return false;return true;}int MCMF(){int flow = 0;int mincost = 0;while(SPFA()){int minflow = INF;for(int i=pre[T]; i!=-1; i=pre[node[i].u])if(node[i].c < minflow)minflow = node[i].c;flow += minflow;for(int i=pre[T]; i!=-1; i=pre[node[i].u]){node[i].c -= minflow;node[i^1].c += minflow;}mincost += dis[T] * minflow;}sumFlow = flow;return mincost;}int main(){while(scanf("%d%d",&n,&m) == 2){Init();S = 0, T = n+1;while(m--){int u,v,w;scanf("%d%d%d",&u,&v,&w);addedge(u,v,1,w);addedge(v,u,1,w);}addedge(S,1,2,0);addedge(n,T,2,0);int ans = MCMF();printf("%d\n",ans);}return 0;}
0 0
- POJ 2135 Farm Tour
- poj 2135 Farm Tour
- poj 2135 Farm Tour
- poj 2135 Farm Tour
- poj 2135 Farm Tour
- POJ 2135-Farm Tour
- POJ 2135 Farm Tour
- POJ-2135-Farm Tour
- POJ 2135 Farm tour
- POJ 2135 Farm Tour
- POJ 2135 Farm Tour
- poj 2135 Farm Tour
- poj 2135 Farm Tour
- POJ 2135 Farm Tour
- POJ 2135 Farm Tour
- poj 2135 Farm Tour
- POJ 2135 Farm Tour
- POJ - 2135 Farm Tour
- Delphi的字符串替换函数
- 初级篇-做iOS开发你需要知道的
- [BZOJ2326][HNOI2011]数学作业 && 分段矩阵
- 长期便秘会引起肠癌吗?
- 项目资料
- poj 2135 Farm Tour
- 利用智能手机(Android)追踪一块磁铁(二)
- linux/init.h 内核常用头文件
- Entity Framework 处理MySQL,Oracle 并发问题
- C++11 TypeList 妙用
- UiAutomator系列——Appium Android Bootstrap源码分析之简介(006)
- Longest Valid Parentheses
- 数据库中视图的作用
- 日经社説 20150108 非自民の受け皿を目指せ