博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
千万别点进来,点进来你就哭了(最短路,dijkstra)
阅读量:4941 次
发布时间:2019-06-11

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

Description

PY利用寒假摸鱼时间去了一趟香港吃吃吃,下面就由我介绍一下我遇到的好吃的香港美食。

首先介绍第一家合益泰小食,这家主打肠粉,这家的肠粉特别的正宗,价格非常亲民,口感非常好

公和荳品厂,这家的豆腐花特别好吃,超级嫩,口感又香又滑。

添好运——这是一家港式点心店,我推荐吃这里的糯米鸡和凤爪,口感都非常好,这里的虾饺也很好吃。

不过叉烧包太甜了,甜到我受不了了。

最后推荐一个华星冰室,不能多写了,不然题面写不下了。这里我极力推荐这家店的奶茶,

奶和茶混合的刚刚好的样子,没有以前我喝的以前的奶茶的那种过分甜,一点茶的味道都没有。(喝过很多奶茶,一个个都甜的不得了)

aaaaa.pngbbbbbbbbbbbbbbbb.pngcccccccccccccc.pngddddddddddddddd.pngeeeeeeeeeeeeeeeeeeeeee.png

下面开始PY的香港之行,PY有nn个要去的小吃店,这nn个小吃店被mm条路径联通起来。

PY有11个传送石和n-1n−1个传送石碎片。

PY可以用传送石标记一个小吃店作为根据地。

每当PY吃完一个地点的美食,必须回到根据地(传送石标记的小吃店)休息一段时间,才能去另外一个小吃店。

也就是说你从根据地走去另一个小吃店吃完之后,不需要再走回来,用传送石碎片即可回来。

现在PY想知道他该标记那个小吃店才能让她走最短的路程吃完这nn个小吃店?

请聪明的你思考上述问题,并告诉他所需走的路程总和 和 他该标记那个地点作为根据地。

ps.传送石只能标记一个小吃店。

思路:最短路枚举求和,我一开始用vector邻接表诡异超时,后来改用前向星才过了,莫非是OJ卡vector??

#include 
#include
#include
#include
#include
using namespace std; #define MAXM 10010#define MAXN 10010#define INF 1e9struct Edge{
long long to; //这条边的终点 long long next; //下一条边的存储下标 long long w; //权值}edge[MAXM * 2]; struct node{
long long u,dis; node(long long u,long long dis):u(u),dis(dis){
} bool operator < (const node& rhs)const {
return dis > rhs.dis; }};long long dis[MAXN];long long n, m, cnt; long long head[MAXN]; long long vis[MAXN] ;void Add(long long u, long long v, long long w) {
edge[cnt].w = w; edge[cnt].to = v; edge[cnt].next = head[u]; head[u] = cnt++; } long long dijkstra(long long s, long long n) {
priority_queue
q; q.push(node( s,0 )); for(long long i = 1;i<=n;i++) dis[i] = INF; dis[s] = 0; memset(vis,0,sizeof(vis)); while (!q.empty()) { node now = q.top(); q.pop(); long long u = now.u; long long d = now.dis; if(vis[u]) continue; vis[u] = 1; for (long long i = head[u]; ~i; i = edge[i].next) { long long t = edge[i].to, v = edge[i].w; if (!vis[t]&&dis[t] > dis[u] + v) { dis[t] = dis[u] + v; q.push(node( t,dis[t] )); } } } long long ans = 0; for (long long i = 1; i <= n; i++) ans += dis[i]; return ans;// return dis[n];}int main() { long long u, v, w; while(~scanf("%lld%lld",&n,&m)) { cnt = 0; memset(head,-1,sizeof(head)); for(long long i=1; i<=m; i++) { scanf("%lld%lld%lld",&u,&v,&w); Add(u, v, w); Add(v, u, w); } long long a,b; long long min_p,min_d; min_p = 0,min_d = INF; for(long long i = 1;i<=n;i++) { long long ans = dijkstra(i,n); if(min_d>ans) { min_d = ans; min_p = i; } } printf("%lld %lld\n",min_d,min_p); } return 0;}

转载于:https://www.cnblogs.com/tomjobs/p/10617587.html

你可能感兴趣的文章
SQLServer 错误: 15404,无法获取有关 Windows NT 组
查看>>
html5全局属性
查看>>
【转】Android Hook框架Xposed详解
查看>>
Android 有用代码片段总结
查看>>
英语各种时态例句
查看>>
从下往上看--新皮层资料的读后感 第三部分 70年前的逆向推演- 从NN到ANN
查看>>
(转)系统引导管理器GRUB详解
查看>>
数据访问C#入门经典第21章-读写压缩数据
查看>>
PHP超时处理全面总结(转)
查看>>
利用python进行数据分析--pandas入门2
查看>>
[zz]使用 libevent 和 libev 提高网络应用性能
查看>>
Linux故障处理最佳实践
查看>>
6标准文件读写
查看>>
jsTree 核心功能(core functionality) API
查看>>
Perl oop链接数据库
查看>>
网络虚拟化我眼中的OpenFlow
查看>>
[leetcode] 3. Longest Substring Without Repeating Characters
查看>>
06 Frequently Asked Questions (FAQ) 常见问题解答 (常见问题)
查看>>
获取判断IE版本 TypeError: Cannot read property 'msie' of undefined
查看>>
tcpreplay安装使用
查看>>