洛谷—— P1629 邮递员送信
https://www.luogu.org/problem/show?pid=1629
题目描述
有一个邮递员要送东西,邮局在节点1.他总共要送N-1样东西,其目的地分别是2~N。由于这个城市的交通比较繁忙,因此所有的道路都是单行的,共有M条道路,通过每条道路需要一定的时间。这个邮递员每次只能带一样东西。求送完这N-1样东西并且最终回到邮局最少需要多少时间。
输入输出格式
输入格式:
第一行包括两个整数N和M。
第2到第M+1行,每行三个数字U、V、W,表示从A到B有一条需要W时间的道路。 满足1<=U,V<=N,1<=W<=10000,输入保证任意两点都能互相到达。
【数据规模】
对于30%的数据,有1≤N≤200;
对于100%的数据,有1≤N≤1000,1≤M≤100000。
输出格式:
输出仅一行,包含一个整数,为最少需要的时间。
输入输出样例
- 5 10
- 2 3 5
- 1 5 5
- 3 5 6
- 1 2 8
- 1 3 8
- 5 3 4
- 4 1 8
- 4 5 3
- 3 5 6
- 5 4 2
- 83
- 正反两边SPFA
- #include <algorithm>
- #include <cstring>
- #include <cstdio>
- #include <queue>
- using namespace std;
- const int N(+);
- const int M();
- int n,m;
- long long ans;
- int hed[N],had[N],sumedge;
- struct Edge
- {
- int v,next,w;
- Edge(int v=,int next=,int w=):
- v(v),next(next),w(w){}
- }edge[M<<];
- inline void ins(int u,int v,int w,int *head)
- {
- edge[++sumedge]=Edge(v,head[u],w);
- head[u]=sumedge;
- }
- bool inq[N];
- queue<int>que;
- int dis1[N],dis2[N];
- inline void SPFA_1()
- {
- memset(dis1,/,sizeof(dis1));
- dis1[]=; que.push(); inq[]=;
- for(int u,v;!que.empty();)
- {
- u=que.front(); que.pop(); inq[u]=;
- for(int i=hed[u];i;i=edge[i].next)
- {
- v=edge[i].v;
- if(dis1[v]>dis1[u]+edge[i].w)
- {
- dis1[v]=dis1[u]+edge[i].w;
- if(!inq[v]) inq[v]=,que.push(v);
- }
- }
- }
- }
- inline void SPFA_2()
- {
- memset(dis2,/,sizeof(dis2));
- dis2[]=; que.push(); inq[]=;
- for(int u,v;!que.empty();)
- {
- u=que.front(); que.pop(); inq[u]=;
- for(int i=had[u];i;i=edge[i].next)
- {
- v=edge[i].v;
- if(dis2[v]>dis2[u]+edge[i].w)
- {
- dis2[v]=dis2[u]+edge[i].w;
- if(!inq[v]) inq[v]=,que.push(v);
- }
- }
- }
- }
- int main()
- {
- scanf("%d%d",&n,&m);
- for(int u,v,w,i=;i<=m;i++)
- {
- scanf("%d%d%d",&u,&v,&w);
- ins(u,v,w,hed);ins(v,u,w,had);
- }
- SPFA_1(); SPFA_2();
- for(int i=;i<=n;i++) ans+=(long long)dis1[i]+dis2[i];
- printf("%lld\n",ans);
- return ;
- }
洛谷—— P1629 邮递员送信的更多相关文章
- 洛谷 P1629 邮递员送信-反向建边
洛谷 P1629 邮递员送信 题目描述: 有一个邮递员要送东西,邮局在节点 11.他总共要送 n-1n−1 样东西,其目的地分别是节点 22 到节点 nn.由于这个城市的交通比较繁忙,因此所有的道路都 ...
- 洛谷——P1629 邮递员送信
P1629 邮递员送信 题目描述 有一个邮递员要送东西,邮局在节点1.他总共要送N-1样东西,其目的地分别是2~N.由于这个城市的交通比较繁忙,因此所有的道路都是单行的,共有M条道路,通过每条道路需要 ...
- 洛谷 P1629 邮递员送信 题解
P1629 邮递员送信 题目描述 有一个邮递员要送东西,邮局在节点1.他总共要送N-1样东西,其目的地分别是2~N.由于这个城市的交通比较繁忙,因此所有的道路都是单行的,共有M条道路,通过每条道路需要 ...
- 洛谷P1629 邮递员送信
题目描述 有一个邮递员要送东西,邮局在节点1.他总共要送N-1样东西,其目的地分别是2~N.由于这个城市的交通比较繁忙,因此所有的道路都是单行的,共有M条道路,通过每条道路需要一定的时间.这个邮递员每 ...
- 洛谷 P1629 邮递员送信
题目描述 有一个邮递员要送东西,邮局在节点1.他总共要送N-1样东西,其目的地分别是2~N.由于这个城市的交通比较繁忙,因此所有的道路都是单行的,共有M条道路,通过每条道路需要一定的时间.这个邮递员每 ...
- yzoj P1412 & 洛谷P1629 邮递员送信 题解
有一个邮递员要送东西,邮局在结点1.他总共要送N-1样东西,其目的地分别是2~N.由于这个城市的交通比较繁忙,因此所有的道路都是单行的,共有M条道路,通过每条道路需要一定的时间.这个邮递员每次只能带一 ...
- 洛谷P1629 邮递员送信 最短路-Djistra
先上一波题目qwq https://www.luogu.org/problem/P1629· 复习了一波 dijstra 的 priority_queue(优先队列)优化的写法 tips: 求单项路中 ...
- Luogu P1629 邮递员送信
P1629 邮递员送信 题目描述 有一个邮递员要送东西,邮局在节点1.他总共要送N-1样东西,其目的地分别是2~N.由于这个城市的交通比较繁忙,因此所有的道路都是单行的,共有M条道路,通过每条道路需要 ...
- P1629 邮递员送信
题目描述: 有一个邮递员要送东西,邮局在节点1.他总共要送N-1样东西,其目的地分别是2~N.由于这个城市的交通比较繁忙,因此所有的道路都是单行的,共有M条道路,通过每条道路需要一定的时间.这个邮递员 ...
随机推荐
- poj_2187凸包,暴力解法
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #i ...
- hdu_1394,线段树求逆序数
http://www.notonlysuccess.com/index.php/segment-tree-complete/ #include<iostream> #include< ...
- 曲根英语万词---二、evoke
曲根英语万词---二.evoke 一.总结 一句话总结:evoke v.唤起,引起 词根:-voc-, -vok- [词根含义]:声音,叫喊 1.consecrate? v,供奉,奉为神圣 -ate, ...
- Pycharm在创建py文件时,如何自动添加默认文件头注释?
PyCharm是一款很好用的编写Python工程的IDE,用PyCharm创建一个Python文件或者向工程添加一个.py文件时,为了更好的使所编写的代码在各操作环境更好的运行,我们往往需要在.py文 ...
- POJ 3145 线段树 分块?+暴力
思路: 线段树 (分类讨论) 此题数据很水 数据很水 数据很水 但是卡个暴力还是没问题的-- //By SiriusRen #include <cstdio> #include <c ...
- webpack 读取文件变量
1.webpack 获取文件中变量 <%= htmlWebpackPlugin.options.title %> <p><%= htmlWebpackPlugin.opt ...
- Android chromium 1
For Developers > Design Documents > Java Resources on Android Overview Chrome for Android ...
- 使用 Beego 搭建 Restful API 项目
1 环境准备 首先你需要在你的环境安装以下软件: go:编程语言运行环境 git:版本控制工具 beego:go 语言流行的开发框架 bee:beego 配套的快速搭建工具 你喜欢的数据库:这里以 M ...
- 与 JSON 相关的一些操作 (项目中用到一部分,后续逐渐完善)
1.JSON 打印 console.log(JSON.stringify(data, null, 4)); 2.JSON 格式判断 var isjson = typeof(obj) == " ...
- 几个提高效率的PHOTOSHOP秘密快捷键
1.拖动选择 使用矩形选框工具,在画布上拖动(不要松开鼠标),这时按住空格键,然后移动鼠标,你会发现选区也跟着移动了. 2.左右流量文档 按住Cmd(Ctrl)键,上下滚动鼠标,你会发现文档的滚动条在 ...