poj 2135 (基础费用流)
题意:从1到n再到1,每条边只能走一次,求最短距离。
建图:每条边只能走一次就是流量是1,添加源点与1相连,容量为2,费用为0,n与汇点相连容量为2,费用为0;
求增广路用SPFA最短路求,,
#include<stdio.h>
#include<queue>
#include<string.h>
const int N=1100;
const int inf=0x3fffffff;
using namespace std;
int cost[N],start,end,n,head[N],num,pre[N],vis[N];
struct edge
{
int st,ed,cp,flow,next;
}e[N*N];
void addedge(int x,int y,int c,int w)
{
e[num].st=x;e[num].ed=y;e[num].cp=c; e[num].flow=w;e[num].next=head[x];head[x]=num++;
e[num].st=y;e[num].ed=x;e[num].cp=-c;e[num].flow=0;e[num].next=head[y];head[y]=num++;
}
int SPFA()
{
int i,u,v;
queue<int>Q;
for(i=start;i<=end;i++)
{cost[i]=inf;vis[i]=0;pre[i]=-1;}
cost[start]=0;vis[start]=1;
Q.push(start);
while(!Q.empty())
{
u=Q.front();
Q.pop();vis[u]=0;
for(i=head[u];i!=-1;i=e[i].next)
{
v=e[i].ed;
if(e[i].flow>0&&cost[v]>cost[u]+e[i].cp)
{
pre[v]=i;
cost[v]=cost[u]+e[i].cp;
if(vis[v]==0)
{
vis[v]=1;
Q.push(v);
}
}
}
}
if(pre[end]==-1)
return 0;
return 1;
}
int mincost()
{
int MINcost=0,maxflow=0,i,minflow;
while(SPFA())
{
minflow=inf;
for(i=pre[end];i!=-1;i=pre[e[i].st])
if(minflow>e[i].flow)
minflow=e[i].flow;
maxflow+=minflow;
for(i=pre[end];i!=-1;i=pre[e[i].st])
{
e[i].flow-=minflow;
e[i^1].flow+=minflow;
MINcost+=e[i].cp;
}
}
return MINcost;
}
int main()
{
int i,x,y,c,m;
while(scanf("%d%d",&n,&m)!=-1)
{
start=0;end=n+1;num=0;
memset(head,-1,sizeof(head));
for(i=0;i<m;i++)
{
scanf("%d%d%d",&x,&y,&c);
addedge(x,y,c,1);
addedge(y,x,c,1);
}
addedge(start,1,0,2);
addedge(n,end,0,2);
printf("%d\n",mincost());
}
return 0;
}
poj 2135 (基础费用流)的更多相关文章
- POJ 2516 基础费用流
题意 有n个顾客,m个供应商,k种货物,给你顾客对于每种货物的要求个数,和供应商对于每种货物的现有量,以及供应每种货物的时候供应商和顾客之间的运输单价,问你满足所有顾客的前提下的最小运输费 ...
- POJ 2135 简单费用流
题意: 题意是一个人他要从牧场1走到牧场n然后在走回来,每条路径只走一次,问全程的最短路径是多少. 思路: 这个题目挺简单的吧,首先要保证每条边只能走一次,然后还要要求费用最 ...
- POJ 2135 最小费用最大流
题目链接 Farm Tour Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 18961 Accepted: 7326 D ...
- POJ 2135 最小费用最大流 入门题
Farm Tour Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 19207 Accepted: 7441 Descri ...
- poj 2135最小费用最大流
最小费用最大流问题是经济学和管理学中的一类典型问题.在一个网络中每段路径都有"容量"和"费用"两个限制的条件下,此类问题的研究试图寻找出:流量从A到B,如何选择 ...
- poj 3680 Intervals(费用流)
http://poj.org/problem?id=3680 巧妙的构图. 题目:给定N个区间(ai,bi)权值wi,求最大权和且每个点最多覆盖K次. 构图:将区间端点离散化,将第i个点连第i+1个点 ...
- POJ 2175 spfa费用流消圈
题意:给出n栋房子位置和每栋房子里面的人数,m个避难所位置和每个避难所可容纳人数.然后给出一个方案,判断该方案是否最优,如果不是求出一个更优的方案. 思路:很容易想到用最小费用流求出最优时间,在与原方 ...
- POJ 1273 (基础最大流) Drainage Ditches
虽然算法还没有理解透,但以及迫不及待地想要A道题了. 非常裸的最大流,试试lrj的模板练练手. #include <cstdio> #include <cstring> #in ...
- POJ 2135 /// 最小费用流最大流 非负花费 BellmanFord模板
题目大意: 给定一个n个点m条边的无向图 求从点1去点n再从点n回点1的不重叠(同一条边不能走两次)的最短路 挑战P239 求去和回的两条最短路很难保证不重叠 直接当做是由1去n的两条不重叠的最短路 ...
随机推荐
- C# 7.0特性与vs2017
下面是关于在C#7.0语言中计划功能的说明.其中大部分功能在Visual Studio “15” Preview 4中能运行.现在是最好的试用时期,请记录下你们的想法. C#7.0语言增加了许多的新功 ...
- jquery.uploadify 使用过程
HTML: <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"& ...
- C 常量的类型
http://bbs.csdn.net/topics/380028485 整型常量的类型是下列相应表中第一个能表示其值的类型: int --> long int --> long long ...
- Netdata----Linux 性能实时监测工具
https://my-netdata.io/ https://github.com/firehol/netdata/wiki http://soluck.iteye.com/blog/2291618
- Windows Performance Toolkit
http://bigasp.com/archives/606 https://randomascii.wordpress.com/category/xperf/ ADK 8.0 (C:\Progra ...
- debian安装ibus中文输入法
转载自:http://www.shunix.com/debian-ibus-chinese-470/ 以前在debian一直用scim,但是那个真的很不好用,现在用的是debian squeeze还是 ...
- FT网站开发过程遇到的问题汇总
1.jar包不兼容问题.主要是mybatis,spring jar包不兼容.同时jstl标签也需要jar包,是jstl.jar,standard.jar. 2.mybatis的mapper.xml映射 ...
- linux umask命令
umask命令 umask命令功能:显示.设置文件的缺省权限. umask命令语法:umask [-S] -S:以rwx形式显示新建文件或目录的缺省权限. 执行umask: 显示0022 第一个0:特 ...
- 2. python 字符串常量
2. python 字符串常量 1.单双引号字符串是一样的 >>> 'abc',"abc" ('abc', 'abc') >>> 当 ...
- 【java】关于Map的排序性的一次使用,有序的Map
关于Map的排序性的一次使用,有序的Map >>>>> hashmap是按key的hash码排序的,而treemap是利用comparator 进行key的自然排序的 / ...