网络流 poj 2135
n个点 m条边
给m条边
求1->n n->1 最小花费,每条边最多走一次
两个最短路显然不行 会影响另外一条
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<queue>
#include<math.h> using namespace std; #define inf 100000000
#define MAXN 50000
#define MAXN1 1500 struct node
{
int fr,to,next,fl,w; }x[MAXN];
int cnt,S,T;
int head[MAXN1],dis[MAXN1],pre[MAXN1];
bool vis[MAXN1]; void add(int u,int v,int fl,int w)
{
x[cnt].fr=u;
x[cnt].next=head[u];
x[cnt].to=v;
x[cnt].fl=fl;
x[cnt].w=w;
head[u]=cnt++;
}
queue<int>q1; int spfa() //最短路的话就是可以增广 费用最少
{
memset(vis,,sizeof(vis));
memset(pre,-,sizeof(pre));
int i;
for(i=;i<=T;i++)
dis[i]=inf;
dis[S]=;
vis[S]=;
q1.push(S);
while(!q1.empty())
{
int now=q1.front();
q1.pop();
vis[now]=;
for(i=head[now];i!=-;i=x[i].next)
{
if(dis[now]+x[i].w<dis[x[i].to]&&x[i].fl)
{
dis[x[i].to]=dis[now]+x[i].w;
pre[x[i].to]=i;
if(vis[x[i].to]==)
{
q1.push(x[i].to);
vis[x[i].to]=;
}
}
}
}
int a=pre[T];
while(a!=-) //要结束了也可以更新流量
{
x[a].fl-=;
x[a^].fl+=;
a=pre[x[a].fr];
}
return pre[T]!=-;
} int main()
{
int n,m; while(scanf("%d%d",&n,&m)!=EOF)
{
int i;
cnt=;
memset(head,-,sizeof(head));
S=,T=n+;
for(i=;i<=m;i++)
{
int a,b,w; scanf("%d%d%d",&a,&b,&w);
add(a,b,,w),add(b,a,,-w); //-w 如果有一条更优的路 可以走回来+(-w);
add(b,a,,w),add(a,b,,-w);
}
add(S,,,),add(,S,,); //其实就是2次 1->n
add(n,T,,),add(T,n,,);
int ans=;
while(spfa())
ans=ans+dis[T];
printf("%d\n",ans);
}
return ;
}
网络流 poj 2135的更多相关文章
- POJ 2135 Farm Tour (网络流,最小费用最大流)
POJ 2135 Farm Tour (网络流,最小费用最大流) Description When FJ's friends visit him on the farm, he likes to sh ...
- POJ 2135 Farm Tour (最小费用最大流模板)
题目大意: 给你一个n个农场,有m条道路,起点是1号农场,终点是n号农场,现在要求从1走到n,再从n走到1,要求不走重复路径,求最短路径长度. 算法讨论: 最小费用最大流.我们可以这样建模:既然要求不 ...
- poj 2135 Farm Tour 【无向图最小费用最大流】
题目:id=2135" target="_blank">poj 2135 Farm Tour 题意:给出一个无向图,问从 1 点到 n 点然后又回到一点总共的最短路 ...
- 网络流(最小费用最大流):POJ 2135 Farm Tour
Farm Tour Time Limit: 1000ms Memory Limit: 65536KB This problem will be judged on PKU. Original ID: ...
- 【网络流#9】POJ 2135 Farm Tour 最小费用流 - 《挑战程序设计竞赛》例题
[题意]给出一张无向图,从1开始到n,求两条没有公共边的最短路,使得路程总和最小 每条边的权值设为费用,最大流量设为1,然后就是从源点到汇点流量为2的最小费用流. 因为是规定了流量,新建一个源点和一个 ...
- Poj(2135),MCMF,模板
题目链接:http://poj.org/problem?id=2135 Farm Tour Time Limit: 1000MS Memory Limit: 65536K Total Submis ...
- POJ 2135 Farm Tour (费用流)
[题目链接] http://poj.org/problem?id=2135 [题目大意] 有一张无向图,求从1到n然后又回来的最短路 同一条路只能走一次 [题解] 题目等价于求从1到n的两条路,使得两 ...
- POJ - 2135最小费用流
题目链接:http://poj.org/problem?id=2135 今天学习最小费用流.模板手敲了一遍. 产生了一个新的问题:对于一条无向边,这样修改了正向边容量后,反向边不用管吗? 后来想了想, ...
- POJ 2135 Farm Tour
题目大意:有一个无向图..农夫从1号点出发..要到达N号点..然后回到1号点..来回不能走相同的路径..问最短的距离是多少. 题解:又是不能走重复路径!基本图论算法直接扔掉上网络流.不能相同就边限1, ...
随机推荐
- 第27章 结构型模式大PK
27.1 代理模式 VS 装饰模式 27.1.1 代理模式 (1)场景:客人找运动员代理要求安排运动员参加比赛 (2)说明:代理人有控制权,可以拒绝客人的要求,也可以答应安排,甚至自己下去跑(因为有些 ...
- NSArray遍历和修改崩溃
//一.代码 NSArray *array = [self.dataList mutableCopy]; 或 NSArray *array = [NSArray arrayWithArray:self ...
- $.data(data , "")
今天在二次开发的时候,看到源代码的新闻列表是Aajax获取的,点击新闻内容触发编辑,我没有看到新闻Id却能查到信息. 观看$.ajax遍历赋值过程中,$tr("<a>新闻内容&l ...
- Maya 与 Matlab 数据互联插件使用教程
实验室做网格处理方面的算法,写界面很麻烦,所以有了利用maya和matlab进行数据连通的念头,于是有了这个插件. 这个插件可以把maya的网格数据导入matlab之中,完成计算之后重新返回maya. ...
- window10 安装出现the error code is 2503错误的解决方法
window10 安装出现the error code is 2503错误的解决方法: 设置 C:\WINDOWS\TEMP的权限
- IntelliJ IDEA 打包可运行的 JAR
## 构建说明 创建Artifest任务 * File -> Project Structure -> Artifacts -> + JAR* 选择 From module with ...
- Openjudge 3.9-3339
3339:List 总时间限制: 4000ms 内存限制: 65536kB 描述 写一个程序完成以下命令:new id --新建一个指定编号为id的序列(id<10000)add id num- ...
- [转]各种有用的PHP开源库精心收集
FROM : http://my.oschina.net/caroltc/blog/324024 1.html2ps and html2pdf 下载地址: http://www.tufat.co ...
- top状态及其常用技巧
看tcp状态 /bin/netstat -an|awk '/^tcp/{++S[$NF]}END{for(a in S) print a,S[a]}' 在 top 状态下,按 "shif ...
- sql 2012 提示列名无效 但可以执行问题
笔者目前使用Ctrl+Shift+R可以解决这个问题,因为智能感知的问题,需要重新整理一下intellisense.有其他方法,请园友共享一下,谢谢. VS2012及13都有用到智能感知,而在sql里 ...