poj 2135 Farm Tour【 最小费用最大流 】
第一道费用流的题目---
其实---还是不是很懂,只知道沿着最短路找增广路
建图
源点到1连一条容量为2(因为要来回),费用为0的边
n到汇点连一条容量为2,费用为0的边
另外的就是题目中输入的了
另外这题是无向边-----
maxn 开到1000会re----
存个模板先吧------------------------------------------
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<set>
#include<map>
#include<stack>
#include<vector>
#include<queue>
#include<string>
using namespace std; typedef long long LL;
const int maxn = ;
const int INF = ( << ) - ; int first[maxn],vis[maxn],dis[maxn],pos[maxn],ecnt,size; struct Edge{
int v,next,cap,cost;
} e[*maxn]; void init(){
ecnt = ;
memset(first,-,sizeof(first));
} void add_edge(int u,int v,int cap,int cost){
e[ecnt].v = v;
e[ecnt].cap = cap;
e[ecnt].cost = cost;
e[ecnt].next = first[u];
first[u] = ecnt++; e[ecnt].v = u;
e[ecnt].cap = ;
e[ecnt].cost = -cost;
e[ecnt].next = first[v];
first[v] = ecnt++;
} bool SPFA(int s, int t)
{
int u,v,i;
queue <int> q;
memset(vis,,sizeof(vis));
for(i= ;i <= size;i++) dis[i]=INF; dis[s]=;
vis[s]=;
q.push(s); while(!q.empty()){
u=q.front(); q.pop(); vis[u]=;
for (i = first[u]; ~i;i = e[i].next){
v=e[i].v;
if(e[i].cap > && dis[u]+e[i].cost < dis[v]){
dis[v]=dis[u]+e[i].cost;
pos[v]=i;
if(!vis[v]){
vis[v]=;
q.push(v);
}
}
}
}
return dis[t] != INF;
} LL MCMF(int s,int t)
{
int i;
LL cost=,flow=;
while(SPFA(s,t)){
int d=INF;
for (i = t;i != s;i = e[pos[i]^].v){
d = min(d,e[pos[i]].cap);
}
for(i = t;i != s;i = e[pos[i]^].v){
e[pos[i]].cap -= d;
e[pos[i]^].cap += d;
}
flow += d;
cost += dis[t]*d;
}
return cost;
} int main(){
int n,m;
while(scanf("%d %d",&n,&m) != EOF){
init();
size = n+;
add_edge(,,,); add_edge(,,,);
add_edge(n+,n,,);add_edge(n,n+,,); for(int i = ;i < m;i++){
int u,v,w;
scanf("%d %d %d",&u,&v,&w);
add_edge(u,v,,w);
add_edge(v,u,,w);
}
printf("%I64d\n",MCMF(,n+));
}
return ;
}
poj 2135 Farm Tour【 最小费用最大流 】的更多相关文章
- poj 2135 Farm Tour 最小费用最大流建图跑最短路
题目链接 题意:无向图有N(N <= 1000)个节点,M(M <= 10000)条边:从节点1走到节点N再从N走回来,图中不能走同一条边,且图中可能出现重边,问最短距离之和为多少? 思路 ...
- POJ 2135 Farm Tour [最小费用最大流]
题意: 有n个点和m条边,让你从1出发到n再从n回到1,不要求所有点都要经过,但是每条边只能走一次.边是无向边. 问最短的行走距离多少. 一开始看这题还没搞费用流,后来搞了搞再回来看,想了想建图不是很 ...
- poj 2351 Farm Tour (最小费用最大流)
Farm Tour Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 17230 Accepted: 6647 Descri ...
- [poj] 1235 Farm Tour || 最小费用最大流
原题 费用流板子题. 费用流与最大流的区别就是把bfs改为spfa,dfs时把按deep搜索改成按最短路搜索即可 #include<cstdio> #include<queue> ...
- POJ2135 Farm Tour —— 最小费用最大流
题目链接:http://poj.org/problem?id=2135 Farm Tour Time Limit: 1000MS Memory Limit: 65536K Total Submis ...
- TZOJ 1513 Farm Tour(最小费用最大流)
描述 When FJ's friends visit him on the farm, he likes to show them around. His farm comprises N (1 &l ...
- Farm Tour(最小费用最大流模板)
Farm Tour Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 18150 Accepted: 7023 Descri ...
- POJ 2135 Farm Tour (费用流)
[题目链接] http://poj.org/problem?id=2135 [题目大意] 有一张无向图,求从1到n然后又回来的最短路 同一条路只能走一次 [题解] 题目等价于求从1到n的两条路,使得两 ...
- poj 2135 Farm Tour 最小费最大流
inf开太小错了好久--下次还是要用0x7fffffff #include<stdio.h> #include<string.h> #include<vector> ...
- POJ 2135 Farm Tour (网络流,最小费用最大流)
POJ 2135 Farm Tour (网络流,最小费用最大流) Description When FJ's friends visit him on the farm, he likes to sh ...
随机推荐
- 【转】【Oracle 集群】11G RAC 知识图文详细教程之RAC在LINUX上使用NFS安装前准备(六)
原文地址:http://www.cnblogs.com/baiboy/p/orc6.html 阅读目录 目录 介绍 下载软件 操作系统安装 Oracle安装先决条件 创建共享磁盘 参考文献 相关文章 ...
- 洛谷P1563 玩具谜题 简单模拟
没意义,注意方向别判错. Code: #include<cstdio> #include<cstring> using namespace std; const int max ...
- java.util.Date日期类通过java语句转换成Sql(这里测试用的是oracle)语句可直接插入(如:insert into)的日期类型
public void add(Emp emp) throws Exception{ QueryRunner runner = new QueryRunner(JdbcUtil.getDataSour ...
- 训练1-A
一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? Input 输入中含有一些数据,分别是成对出现的花布条和 ...
- spring实现定时任务的两种方式之spring @scheduled注解方式
1.使用spring的 scheduled使用注解的方式 这种方法的好处是:使用方便,配置少,提高开发效率: 缺点是:如果使用服务器集群部署方式的时候,其自身无法解决定时任务重复执行的问题. 2.首先 ...
- redis各数据类型应用概述
前言 redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存.亦可持久化的日志型.key-value数据库,并提供多种语言的API. 它是内存存储的数据结构服务器,可用作数据库.高速缓存 ...
- yii 正则验证
required : 必须值验证属性 [['字段名'],required,'requiredValue'=>'必填值','message'=>'提示信息']; #说明:CRequiredV ...
- 开启WIFI
C:\Windows\system32>netsh wlan set hostednetwork mode=allow ssid=wuyechun-wifi k ey= 承载网络模式已设置为允许 ...
- @responsebody注解的作用就是让viewresolver不起作用,不返回视图名称而是直接返回的return object
@responsebody注解的作用就是让viewresolver不起作用,不返回视图名称而是直接返回的return object 2.也可以再方法上添加@ResponseBody注解, 用于这个类里 ...
- muduo库源码剖析(二) 服务端
一. TcpServer类: 管理所有的TCP客户连接,TcpServer供用户直接使用,生命期由用户直接控制.用户只需设置好相应的回调函数(如消息处理messageCallback)然后TcpSer ...