题意:

      就是从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. POJ 2135 简单费用流

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

  2. POJ3422简单费用流

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

  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. 最短路&生成树&二分图匹配&费用流问题

    最短路 题意理解,建图 https://vjudge.net/problem/UVALive-4128 飞机票+行程建图 https://vjudge.net/problem/UVALive-3561 ...

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

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

  6. Mining Station on the Sea HDU - 2448(费用流 || 最短路 && hc)

    Mining Station on the Sea Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Jav ...

  7. poj2135 Farm Tour(费用流)

    Description When FJ's friends visit him on the farm, he likes to show them around. His farm comprise ...

  8. HDU4807 Lunch Time(费用流变种)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=4807 Description The campus of Nanjing Universit ...

  9. 洛谷P4003 无限之环(infinityloop)(网络流,费用流)

    洛谷题目传送门 题目 题目描述 曾经有一款流行的游戏,叫做 Infinity Loop,先来简单的介绍一下这个游戏: 游戏在一个 n ∗ m 的网格状棋盘上进行,其中有些小方格中会有水管,水管可能在格 ...

随机推荐

  1. PAT-1146(Topological Order)拓扑排序+判断一个序列是否满足拓扑序列

    Topological Order PAT-1146 #include<iostream> #include<cstring> #include<string> # ...

  2. 从客流统计到营销赋能,Re-ID加速实体商业数字化转型 | 爱分析洞见

    2020年中国实体商业受到突发疫情的重大影响.以危机为契机,实体商业加速数字化转型,利用创新应用服务自身业务.在此阶段,基于Re-ID(Person Re-identification,即行人再识别) ...

  3. MongoDB -> kafka 高性能实时同步(sync 采集)mongodb数据到kafka解决方案

    写这篇博客的目的 让更多的人了解 阿里开源的MongoShake可以很好满足mongodb到kafka高性能高可用实时同步需求(项目地址:https://github.com/alibaba/Mong ...

  4. 我的2019年总结和一些2020年的flag

    我的2019年总结和一些2020年的flag 前言 2019年在我的人生中注定是里程碑的一年,主要是我毕业了.本篇总结主要聊一些2019年经历的事以及对于自己2020年的期待 1. 再见2019 1. ...

  5. WPF 基础 - 绘画 1) 线段、矩形、圆弧及填充色

    1. 绘画 1.1 图形类型 Line X1.Y1.X2.Y2,Stroke,StrokeThickness Rectangle 矩形 Ellipse 椭圆 Polygon 多边形(自动闭合) Pol ...

  6. YoloV3 记录

    常用于目标检测,因为最近要从目标分类问题转到目标检测中去. tensoflow.Keras(大公司一般都用这个).pytorch(本次学习)------------------主要框架 程序设计模块规 ...

  7. JMeter扩展Java请求实现WebRTC本地音视频推流压测脚本

    WebRTC是Web Real-Time Communication缩写,指网页即时通讯,是一个支持Web浏览器进行实时语音或视频对话的API,实现了基于网页的视频会议,比如声网的Agora Web ...

  8. 【Azure 应用服务】App Service站点Header头中的中文信息显示乱码?当下载文件时,文件名也是乱码?

    问题描述 在本地开发的站点,响应头中的中文可以正常显示,部署到Azure App Service站点后,响应中文乱码.通过多方面验证,在代码中设置Response的Headers会显示乱码,而直接配置 ...

  9. Hznu_oj 2340 你敢一个人过桥吗?

    Description 在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边.如果不借助手电筒的话,大家是无论如何也不敢过桥去的.不幸的是,N个人一共只带了一只手电筒,而桥窄得只够让两个人同时过. ...

  10. 【linux】系统编程-4-共享内存

    目录 前言 6. 共享内存 6.1 概念 6.2 操作函数 6.2.1 shmget() 6.2.2 shmat() 6.2.3 shmdt() 6.2.4 shmctl() 6.3 例子 参考: 前 ...