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的两条不重叠的最短路 ...
随机推荐
- 2018-2019-20172329 《Java软件结构与数据结构》第二周学习总结
2018-2019-20172329 <Java软件结构与数据结构>第二周学习总结 教材学习内容总结 <Java软件结构与数据结构>第三章 集合概述--栈 一.集合 1.我们印 ...
- Git_期末总结
终于到了期末总结的时刻了! 经过几天的学习,相信你对Git已经初步掌握.一开始,可能觉得Git上手比较困难,尤其是已经熟悉SVN的童鞋,没关系,多操练几次,就会越用越顺手. Git虽然极其强大,命令繁 ...
- 重温PHP之快速排序
基本原理:选出当前数组中任一元素(通常为第一个)作为标准,新建两个空数组分别置于当前数组前后,然后遍历当前数组,如果数组中元素值小于等于第一个元素值就放到前边空数组,否则放到后边空数组. //快速排序 ...
- [Javascript]XMLHttpRequest对象实现下载进度条
摘要 可以通过设置一个XMLHttpRequest对象的responseType属性来改变一个从服务器上返回的响应的数据类型.可用的属性值为空字符串 (默认), "arraybuffer&q ...
- windows设置共享
设置共享: 添加用户 点击添加 设置权限 然后别人就可以查看了. 查看共享: 删除共享:
- 在没有界面的类中,实现弹出UIAlertView || 在没有界面的类中,刷新程序界面 思路
+(DisplayErrorMsg *)sharedDisplayErrorMsg { static DisplayErrorMsg *instance = nil; @synchronized(in ...
- .NET:CLR via C# Compute-Bound Asynchronous Operations
线程槽 使用线程池了以后就不要使用线程槽了,当线程池执行完调度任务后,线程槽的数据还在. 测试代码 using System; using System.Collections.Generic; us ...
- Selenium2+python自动化44-元素定位参数化(find_element)
前言 元素定位有八种方法,这个能看到这一篇的小伙伴都知道了,那么有没有一种方法,可以把八种定位合为一种呢?也就是把定位的方式参数化,如id,name.css等设置为一个参数,这样只需维护定位方式的参数 ...
- visio 画类图时 方法里如何加参数
鼠标双击类(打开属性对话框)-->(类别)操作-->属性-->(类别)参数-->(添加参数)
- 从PSD到HTML,网页的实现
在学习完<From PSD to HTML: Building a Set of Website Designs Step by Step>之后,使我对网页的设计和实现有了更深入的认识,我 ...