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的更多相关文章

  1. POJ 2135 Farm Tour (网络流,最小费用最大流)

    POJ 2135 Farm Tour (网络流,最小费用最大流) Description When FJ's friends visit him on the farm, he likes to sh ...

  2. POJ 2135 Farm Tour (最小费用最大流模板)

    题目大意: 给你一个n个农场,有m条道路,起点是1号农场,终点是n号农场,现在要求从1走到n,再从n走到1,要求不走重复路径,求最短路径长度. 算法讨论: 最小费用最大流.我们可以这样建模:既然要求不 ...

  3. poj 2135 Farm Tour 【无向图最小费用最大流】

    题目:id=2135" target="_blank">poj 2135 Farm Tour 题意:给出一个无向图,问从 1 点到 n 点然后又回到一点总共的最短路 ...

  4. 网络流(最小费用最大流):POJ 2135 Farm Tour

    Farm Tour Time Limit: 1000ms Memory Limit: 65536KB This problem will be judged on PKU. Original ID: ...

  5. 【网络流#9】POJ 2135 Farm Tour 最小费用流 - 《挑战程序设计竞赛》例题

    [题意]给出一张无向图,从1开始到n,求两条没有公共边的最短路,使得路程总和最小 每条边的权值设为费用,最大流量设为1,然后就是从源点到汇点流量为2的最小费用流. 因为是规定了流量,新建一个源点和一个 ...

  6. Poj(2135),MCMF,模板

    题目链接:http://poj.org/problem?id=2135 Farm Tour Time Limit: 1000MS   Memory Limit: 65536K Total Submis ...

  7. POJ 2135 Farm Tour (费用流)

    [题目链接] http://poj.org/problem?id=2135 [题目大意] 有一张无向图,求从1到n然后又回来的最短路 同一条路只能走一次 [题解] 题目等价于求从1到n的两条路,使得两 ...

  8. POJ - 2135最小费用流

    题目链接:http://poj.org/problem?id=2135 今天学习最小费用流.模板手敲了一遍. 产生了一个新的问题:对于一条无向边,这样修改了正向边容量后,反向边不用管吗? 后来想了想, ...

  9. POJ 2135 Farm Tour

    题目大意:有一个无向图..农夫从1号点出发..要到达N号点..然后回到1号点..来回不能走相同的路径..问最短的距离是多少. 题解:又是不能走重复路径!基本图论算法直接扔掉上网络流.不能相同就边限1, ...

随机推荐

  1. java-vector hashtable过时?

    vector hashtable过时? 在用JAVA集合时,IDE提示 vector 以及hashtable被arraylist ,hashmap替代,而前者又是线程同步的,不知道为什么?是效率差了的 ...

  2. jsp考试的错题

    (选择一项) A: B: C: D: 正确答案是 A,首先,session的出现确实是为了解决HTTP无法保持客户状态的特点:因此A选项正确:用户信息也是客户状态的一部分,所以由A可以看出B的说法就不 ...

  3. C++ ODB 框架(未实践使用)

    http://www.codesynthesis.com/products/odb/doc/manual.xhtml#17.1

  4. android gridview画分割线,如图:

    1.先上图: 2.具体实现代码: public class LineGridView extends GridView { public LineGridView(Context context) { ...

  5. 处理OSX创建的U盘, 删除EFI分区

    1. 运行 diskpart 2. list disk 3. 根据列出的硬盘, select disk [编号] 4. clean 5. exit 然后再创建分区和格式化

  6. MVC HTTP 错误 403.14 - Forbidden

    HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容. 最可能的原因: 没有为请求的 URL 配置默认文档,并且没有在服务器上启用目录浏览. 可尝试的操作: ...

  7. java script 确认框

    <input name="Submit" type="submit" class="inputedit" value="删除 ...

  8. Apache Rewrite 拟静态配置

    1.mod_rewrite 简介和配置 Rewirte主要的功能就是实现URL的跳转和隐藏真实地址,基于Perl语言的正则表达式规范.平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等 2.mod_ ...

  9. jQuery的prop和attr方法之间区别

    JQuery.attr(): Get the value of an attribute for the first element in the set of matched elements. J ...

  10. [转]源代码的管理和发布:以SVN为例

    FROM : http://ju.outofmemory.cn/entry/47277 前几天在微博吐槽了SVN的几个不爽的地方:.svn文件满天飞.分支管理的麻烦.不爽一般来说都是有过对比后才有如此 ...