题目描述

在电视时代,没有多少人观看戏剧表演。Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤其是古色古香的喜剧片。他们已经打印请帖和所有必要的信息和计划。许多学生被雇来分发这些请柬。每个学生志愿者被指定一个确切的公共汽车站,他或她将留在那里一整天,邀请人们参与。

这里的公交系统是非常特殊的:所有的线路都是单向的,连接两个站点。公共汽车离开起始点,到达目的地之后又空车返回起始点。学生每天早上从总部出发,乘公交车到一个预定的站点邀请乘客。每个站点都被安排了一名学生。在一天结束的时候,所有的学生都回到总部。现在需要知道的是,学生所需的公交费用的总和最小是多少。

输入输出格式

输入格式:

第1行有两个整数n、m(1<=n,m<=1000000),n是站点的个数,m是线路的个数。

然后有m行,每行描述一个线路,包括3个整数,起始点,目的地和价格。

总部在第1个站点,价钱都是整数,且小于1000000000。

输出格式:

输出一行,表示最小费用。

输入样例

4 6
1 2 10
2 1 60
1 3 20
3 4 10
2 4 5
4 1 50

输出样例

210

题意

从1出发到所有点最小花费和,再从所有点回到1最小花费和,求总和

题解

写了个没有堆优化的奇怪dijT了,然后试了下SPFA就AC了,跑得还挺快,其实可以用读入优化和SPFA的SLF优化

从1出发到所有点最小花费和,做一次SPFA

反向建图,从1出发到所有点最小花费和,在做一次SPFA

把两次和加起来即为答案

代码

 #include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=1e6+,M=1e6+;
int head[N],cnt;
int revhead[N],revcnt;
ll d[N];
ll sum;
struct edge
{
int v,next;
ll w;
}edges[M],revedges[M];
void add(int u,int v,ll w)
{
edges[cnt].v=v;
edges[cnt].w=w;
edges[cnt].next=head[u];
head[u]=cnt++;
revedges[revcnt].v=u;
revedges[revcnt].w=w;
revedges[revcnt].next=revhead[v];
revhead[v]=revcnt++;
}
void SPFA(int s,int n)
{
for(int i=;i<=n;i++)d[i]=(ll)1e18;
queue<int>q;
q.push(s);
d[s]=;
while(!q.empty())
{
int u=q.front();q.pop();
for(int i=head[u];i!=-;i=edges[i].next)
{
int v=edges[i].v;
ll w=edges[i].w;
if(d[v]>d[u]+w)
{
d[v]=d[u]+w;
q.push(v);
}
}
}
for(int i=;i<=n;i++)
sum+=d[i];
}
void SPFA1(int s,int n)
{
for(int i=;i<=n;i++)d[i]=(ll)1e18;
queue<int>q;
q.push(s);
d[s]=;
while(!q.empty())
{
int u=q.front();q.pop();
for(int i=revhead[u];i!=-;i=revedges[i].next)
{
int v=revedges[i].v;
ll w=revedges[i].w;
if(d[v]>d[u]+w)
{
d[v]=d[u]+w;
q.push(v);
}
}
}
for(int i=;i<=n;i++)
sum+=d[i];
}
int main()
{
int n,m;
scanf("%d%d",&n,&m);
memset(head,-,sizeof head);
memset(revhead,-,sizeof revhead);
for(int i=,u,v,w;i<m;i++)
{
scanf("%d%d%d",&u,&v,&w);
add(u,v,1LL*w);
}
SPFA(,n);
SPFA1(,n);
printf("%lld\n",sum);
return ;
}

洛谷 P1342 请柬(SPFA)的更多相关文章

  1. 洛谷P1342 请柬(SPFA)

    To 洛谷.1342 请柬 题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤其是古色古香的喜剧片.他们已经打印请帖和所有必要的信息和计 ...

  2. 洛谷P1342 请柬

    P1342 请柬 题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤其是古色古香的喜剧片.他们已经打印请帖和所有必要的信息和计划.许多学 ...

  3. 洛谷——P1342 请柬

    P1342 请柬 题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤其是古色古香的喜剧片.他们已经打印请帖和所有必要的信息和计划.许多学 ...

  4. 洛谷 P1342 请柬 最短路+Dijkstra算法

    目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例 输出样例 说明 思路 AC代码 总结 题面 题目链接 P1342 请柬 题目描述 在电视时代,没有多少人观看戏 ...

  5. 洛谷 P1342 请柬

    题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤其是古色古香的喜剧片.他们已经打印请帖和所有必要的信息和计划.许多学生被雇来分发这些请 ...

  6. 洛谷—— P1342 请柬

    https://www.luogu.org/problemnew/show/1342 题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤 ...

  7. 洛谷P1342请柬

    传送门啦 核心思想:两遍最短路. 1号点去各地的时间直接套最短路模板,各地到1号点时间用逆向思维,视为求1号点沿反边到各地的时间即可. #include <iostream> #inclu ...

  8. 洛谷.4015.运输问题(SPFA费用流)

    题目链接 嗯..水题 洛谷这网络流二十四题的难度评价真神奇.. #include <queue> #include <cstdio> #include <cctype&g ...

  9. NOIP2017提高组Day1T3 逛公园 洛谷P3953 Tarjan 强连通缩点 SPFA 动态规划 最短路 拓扑序

    原文链接https://www.cnblogs.com/zhouzhendong/p/9258043.html 题目传送门 - 洛谷P3953 题目传送门 - Vijos P2030 题意 给定一个有 ...

随机推荐

  1. Linux zookeeper 单机安装

    Zookeeper(端口2181) 下载地址 http://mirror.bit.edu.cn/apache/zookeeper/ 解压到/usr/local目录 >tar -zxvf zook ...

  2. 创建模式--原型模式(JAVA)

    原型模式: 原型模式主要针对模型对象类型的克隆,对已有构造好的对象进行复制获取一个新的对象实例.比如我们在获取一个对象并成功赋值后,要传递给多个处理类去处理. 打个比方:吃面是个处理类,面是个模型对象 ...

  3. Delphi 修改本地日期和时间

    procedure TForm1.ModifySysdate(D: Double); var systemtime:Tsystemtime; DateTime:TDateTime; begin Set ...

  4. native.js 判断是否安装某app

    例:是否安装微信 function isWeixin() { var UIApplication = plus.ios.importClass("UIApplication"); ...

  5. eclipse 使用Maven deploy命令部署构建到Nexus

    转载于:http://blog.csdn.net/jun55xiu/article/details/43051627 1  应用场景:SYS-UTIL(系统工具)项目部署.构建成JAR包(SYS-UT ...

  6. 跨域(四)——document.domain

    浏览器有一个合法的性质:一个页面可以设置document.domain为当前子域或比当前子域更高级的域.一般顶级就到了根域,如果设置为其他域,浏览器就会报权限错误. 利用这个性质,我们可以通过设置do ...

  7. vmware搭建lnmp环境配置域名

    找到nginx配置文件,修改server_name 然后找到/etc/hosts文件 修改成如下 之后在Windows本地的C盘的hosts文件中添加解析 好了,这样就可以访问了 通往牛逼的路上,在意 ...

  8. endl

    endl英语意思是end of line,即一行输出结束,然后输出下一行. endl与cout搭配使用,意思是输出结束.

  9. 学JS的心路历程-函式(四)apply、call

    从上一篇可以知道,不同的函式呼叫会造成this的不同,但我们能不能在呼叫时候明确指定呢? 当然可以.会有这个想法是因为往往在执行某支函式时想要用回呼函式(mizumisushi),但发现this总是显 ...

  10. JQuery 基本知识

    一.简介 JQuery是继prototype之后又一个优秀的Javascript库.它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF1.5+, Safari 2.0+,  ...