题意:
      就是从1走到n然后再走回来,一条边只能走一次,要求路径最短。

思路:
      比较水,可以直接一遍费用流,不解释了,具体的看看代码,敲这个题就是为了练

练手,好久不敲了,怕比赛手生。

 

#include<queue>
#include<stdio.h>
#include<string.h>

#define N_node 1000 + 10
#define N_edge 40000 + 20
#define INF 100000000

using namespace std;

typedef struct
{
   int from ,to ,cost ,flow ,next;
}STAR;

STAR E[N_edge];
int list[N_node] ,tot;
int mer[N_edge];
int s_x[N_node];

void add(int a ,int b ,int c ,int d)
{
     E[++tot].from = a;
     E[tot].to = b;
     E[tot].cost = c;
     E[tot].flow = d;
     E[tot].next = list[a];
     list[a] = tot;
    
     E[++tot].from = b;
     E[tot].to = a;
     E[tot].cost = -c;
     E[tot].flow = 0;
     E[tot].next = list[b];
     list[b] = tot;
}

bool Spfa(int s ,int t ,int n)
{
    int mark[N_node] = {0};
    for(int i = 0 ;i <= n ;i ++) s_x[i] = INF;
    mark[s] = 1 ,s_x[s] = 0;
    queue<int>q;
    q.push(s);
    memset(mer ,255 ,sizeof(mer));
    while(!q.empty())
    {
        int xin ,tou = q.front();
        q.pop();
        mark[tou] = 0;
        for(int k = list[tou] ;k ;k = E[k].next)
        {
            xin = E[k].to;
            if(s_x[xin] > s_x[tou] + E[k].cost && E[k].flow)
            {
                s_x[xin] = s_x[tou] + E[k].cost;
                mer[xin] = k;
                if(!mark[xin])
                {
                    mark[xin] = 1;
                    q.push(xin);
                }
            }
        }
    }
    return mer[t] != -1;
}

int M_C_Flow(int s ,int t ,int n)
{
   int maxflow = 0 ,mincost = 0 ,minflow;
   while(Spfa(s ,t ,n))
   {
       minflow = INF;
       for(int i = mer[t] ;i + 1 ;i = mer[E[i].from])
       if(minflow > E[i].flow) minflow = E[i].flow;
       for(int i = mer[t] ;i + 1 ;i = mer[E[i].from])
       {
           E[i].flow -= minflow;
           E[i^1].flow += minflow;
           mincost += minflow * E[i].cost;
       }
       maxflow += minflow;
   }
   return mincost;
}

int main ()
{
    int n ,m ,i ,a ,b ,c;
    while(~scanf("%d %d" ,&n ,&m))
    {
       memset(list ,0 ,sizeof(list)) ,tot = 1;
       for(i = 1 ;i <= m ;i ++)
       {
          scanf("%d %d %d" ,&a ,&b ,&c);
          add(a ,b ,c ,1);
          add(b ,a ,c ,1);
       }
       add(0 ,1 ,0 ,2);
       add(n ,n + 1 ,0 ,2);
       printf("%d\n" ,M_C_Flow(0 ,n + 1 ,n + 1));
    }
    return 0;
}
         

 

 

   
   
   
   
    

 

 

 

 

 

 

 

POJ2135 来回最短路(简单费用流)相关推荐

  1. POJ3422简单费用流

    题意:      给一个n*n的矩阵,从左上角走到右下角,的最大收益,可以走k次,每个格子的价值只能取一次,但是可以走多次. 思路:       比较简单的一个费用流题目,直接拆点,拆开的点之间连接两 ...

  2. POJ 2135 简单费用流

    题意:       题意是一个人他要从牧场1走到牧场n然后在走回来,每条路径只走一次,问全程的最短路径是多少. 思路:        这个题目挺简单的吧,首先要保证每条边只能走一次,然后还要要求费用最 ...

  3. POJ 2135 Farm Tour amp;amp; HDU 2686 Matrix amp;amp; HDU 3376 Matrix Again 费用流求来回最短路...

    累了就要写题解,近期总是被虐到没脾气. 来回最短路问题貌似也能够用DP来搞.只是拿费用流还是非常方便的. 能够转化成求满流为2 的最小花费.一般做法为拆点,对于 i 拆为2*i 和 2*i+1.然后连 ...

  4. 洛谷 - P4009 汽车加油行驶问题(分层图最短路/最小费用最大流)

    题目链接:点击查看 题目大意:给出一个n*n的矩阵表示道路,途中有一些加油站,现在要从点(1,1)到达点(n,n),问最小花费,其中的一些规则如下: 汽车只能沿着网格边行驶,装满油后可以行驶K条边,出 ...

  5. 【bzoj2324】[ZJOI2011]营救皮卡丘 最短路-Floyd+有上下界费用流

    原文地址:http://www.cnblogs.com/GXZlegend/p/6832504.html 题目描述 皮卡丘被火箭队用邪恶的计谋抢走了!这三个坏家伙还给小智留下了赤果果的挑衅!为了皮卡丘 ...

  6. hdu 2448 Mining Station on the Sea(最短路+费用流)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2448 题意:给你一个由N个港口和M个海上油田构成的连通无向图(给出了图中所有的边和权值),现在给你N个 ...

  7. [ZJOI2011]营救皮卡丘(费用流 + 最短路)

    problem luogu-P4542 solution 刚开始就直观感觉 dpdpdp 不动,却有个看似"理所当然"的贪心:每次跑 kkk 个人所在点到扩展据点的最短距离,然后让 ...

  8. 初识费用流 模板(spfa+slf优化) 餐巾计划问题

    今天学习了最小费用最大流,是网络流算法之一.可以对于一个每条边有一个容量和一个费用(即每单位流的消耗)的图指定一个源点和汇点,求在从源点到汇点的流量最大的前提下的最小费用. 这里讲一种最基础也是最好掌 ...

  9. poj2175费用流消圈算法

    题意:      有n个建筑,每个建筑有ai个人,有m个避难所,每个避难所的容量是bi,ai到bi的费用是|x1-x2|+|y1-y2|+1,然后给你一个n*m的矩阵,表示当前方案,问当前避难方案是否 ...

最新文章

  1. mysql的存储引擎种类,mysql 存储引擎,基本数据类型
  2. C语言实验大纲2010答案,C语言试验大纲(2010年修订).doc
  3. python构造响应头_Python爬虫库requests获取响应内容、响应状态码、响应头
  4. html 长文本 截断 jquery 扩展脚本
  5. 你还不会手写SpringBoot启动器吗
  6. 在线YAML转XML工具
  7. 安装IIS服务(Internet信息服务(Internet Information Services,简写IIS,互联网信息服务)
  8. 复杂系统学习(五):细胞自动机 I:1D 和 2D CAs
  9. 获取chrome的network内容并选择下载其中的资源
  10. 定向士官计算机网络技术在部队干什么,定向培养士官是干什么的
  11. 三千年来激荡人心的名句
  12. ISO/IEC JTC 1/SC 42人工智能分技术委员会第一次全会在京召开
  13. P4322 [JSOI2016]最佳团体(分数规划树上背包)
  14. 东八区时间转换为年月日时分秒(2020-10-26T11:34:30Z转换为2020-10-26 11:34:30)
  15. 弘辽科技:淘宝客单价高好还是低好?如何提高客单价?
  16. 地图标记(学习笔记)
  17. 所有学习资源都给你你汇总好啦!
  18. 神经网络中epoch、batch、batchsize
  19. 【Day8.1】兰州牛肉拉面
  20. 学校网站建设制作:学校站群系统需要哪些栏目规划设计?

热门文章

  1. 实验楼项目课学习笔记-jQuery翻转拼图游戏
  2. HDU 1008 Elevator
  3. 使用PostSharp开始AOP
  4. 极虎病毒创造四个“之最”
  5. 设计模式之:适配器模式
  6. Python3 高级特性
  7. 查看windows 端口进程
  8. MAX2323E - 原理图系列
  9. 用imageNamed加载图片产生的问题
  10. keil c51的内部RAM(idata)动态内存管理程序(转)