博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 2135 Farm Tour (费用流)
阅读量:5068 次
发布时间:2019-06-12

本文共 1100 字,大约阅读时间需要 3 分钟。

 

【题目链接】 

 

【题目大意】

  有一张无向图,求从1到n然后又回来的最短路

  同一条路只能走一次

 

【题解】

  题目等价于求从1到n的两条路,使得两条路的总长最短

  那么就等价于求总流量为2的费用流

 

【代码】

#include 
#include
#include
#include
#include
#include
using namespace std;const int INF=0x3f3f3f3f;typedef pair
P;struct edge{int to,cap,cost,rev;};const int MAX_V=1000;int V,h[MAX_V],dist[MAX_V],prevv[MAX_V],preve[MAX_V];vector
G[MAX_V]; void add_edge(int from,int to,int cap,int cost){ G[from].push_back((edge){to,cap,cost,G[to].size()}); G[to].push_back((edge){from,0,-cost,G[from].size()-1});}int min_cost_flow(int s,int t,int f){ int res=0; fill(h,h+V,0); while(f>0){ priority_queue

,greater

> que; fill(dist,dist+V,INF); dist[s]=0; que.push(P(0,s)); while(!que.empty()){ P p=que.top(); que.pop(); int v=p.second; if(dist[v]

0&&dist[e.to]>dist[v]+e.cost+h[v]-h[e.to]){ dist[e.to]=dist[v]+e.cost+h[v]-h[e.to]; prevv[e.to]=v; preve[e.to]=i; que.push(P(dist[e.to],e.to)); } } } if(dist[t]==INF)return -1; for(int v=0;v

转载于:https://www.cnblogs.com/forever97/p/poj2135.html

你可能感兴趣的文章
线程同步机制初识 【转载】
查看>>
Oracle 游标使用全解
查看>>
SQL语句在查询分析器中可以执行,代码中不能执行
查看>>
yii 1.x 添加 rules 验证url数组
查看>>
html+css 布局篇
查看>>
银行排队问题(详解队列)
查看>>
序列化和反序列化(1)---[Serializable]
查看>>
SQL优化
查看>>
用C语言操纵Mysql
查看>>
轻松学MVC4.0–6 MVC的执行流程
查看>>
4.9 Parser Generators
查看>>
redis集群如何清理前缀相同的key
查看>>
redis7--hash set的操作
查看>>
20.字典
查看>>
Python 集合(Set)、字典(Dictionary)
查看>>
oracle用户锁定
查看>>
(转)盒子概念和DiV布局
查看>>
Android快速实现二维码扫描--Zxing
查看>>
获取元素
查看>>
nginx+lighttpd+memcache+mysql配置与调试
查看>>