题目链接:https://nanti.jisuanke.com/t/230

  • 1000ms
  • 65536K

题目描述

德克萨斯纯朴的民眾们这个夏天正在遭受巨大的热浪!!!他们的德克萨斯长角牛吃起来不错,可是他们并不是很擅长生产富含奶油的乳制品。Farmer John此时以先天下之忧而忧,后天下之乐而乐的精神,身先士卒地承担起向德克萨斯运送大量的营养冰凉的牛奶的重任,以减轻德克萨斯人忍受酷暑的痛苦。FJ已经研究过可以把牛奶从威斯康星运送到德克萨斯州的路线。这些路线包括起始点和终点先一共经过T(1 <= T <= 2,500)个城镇,方便地标号为1到T。除了起点和终点外地每个城镇由两条双向道路连向至少两个其它地城镇。每条道路有一个通过费用(包括油费,过路费等等)。考虑这个有7个城镇的地图。城镇5是奶源,城镇4是终点(括号内的数字是道路的通过费用)。

经过路线5-6-3-4总共需要花费3  (5-> 6)  +  4  (6-> 3)  +  3  (3-> 4)  =  10的费用。 给定一个地图,包含C (1 <= C <= 6,200)条直接连接2个城镇的道路。每条双向道路由两个端点Rs和Re (1 <= Rs <= T; 1 <= Re <= T),和花费(1 <= Ci <= 1,000)组成。求从起始城镇Ts (1 <= Ts <= T)到终点城镇Te(1 <= Te <= T)最小的总费用。

输入格式

第一行: 4个由空格隔开的整数: T, C, Ts, Te
第2到第C+1行: 第i+1行描述第i条道路。有3个由空格隔开的整数: Rs,Re和Ci

输出格式

一个单独的整数表示Ts到Te的最短路的长度。
所有测试数据保证至少存在一条道路。5->6->1->4 (3 + 1 + 3 = 7)

样例输入

7 11 5 4
2 4 2
1 4 3
7 2 2
3 4 3
5 7 5
7 3 3
6 1 1
6 3 4
2 4 3
5 6 3
7 2 1

样例输出

7

解题思路

这一题就是一道单源最短路问题,Dijkstra和SPFA都可以。
Dijkstra:

#include <queue>
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
typedef pair <int, int> PII;
struct edge {int u, v, w;
}e[12550];
int cnt, f[2550], vis[2550], dis[2550];
void Add(int u, int v, int w)
{e[++cnt] = (edge){f[u], v, w};f[u] = cnt;
}
int main()
{int t, c, u, v, w, ts, te;while (~scanf("%d%d%d%d", &t, &c, &ts, &te)){cnt = 0;priority_queue <PII, vector<PII>, greater<PII> > Q;memset(f, 0, sizeof(f));memset(vis, 0, sizeof(vis));memset(dis, 0x3f, sizeof(dis));for (int i = 0; i < c; i++){scanf("%d%d%d", &u, &v, &w);Add(u, v, w);Add(v, u, w);}dis[ts] = 0;Q.push(PII(0, ts));while (!Q.empty()){PII x = Q.top();Q.pop();if (vis[x.second])continue;vis[x.second] = 1;for (int i = f[x.second]; i; i = e[i].u){v = e[i].v;if (dis[v] > x.first + e[i].w){dis[v] = x.first + e[i].w;Q.push(PII(dis[v], v));}}}printf("%d\n", dis[te]);}return 0;
}

Spfa:

#include <queue>
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
struct edge {int u, v, w;
}e[12550];
int cnt, f[2550], vis[2550], dis[2550];
void Add(int u, int v, int w)
{e[++cnt] = (edge){f[u], v, w};f[u] = cnt;
}
int main()
{int t, c, u, v, w, ts, te;while (~scanf("%d%d%d%d", &t, &c, &ts, &te)){cnt = 0;queue <int> Q;memset(f, 0, sizeof(f));memset(vis, 0, sizeof(vis));memset(dis, 0x3f, sizeof(dis));for (int i = 0; i < c; i++){scanf("%d%d%d", &u, &v, &w);Add(u, v, w);Add(v, u, w);}dis[ts] = 0;vis[ts] = 1;Q.push(ts);while (!Q.empty()){u = Q.front();Q.pop();vis[u] = 0;for (int i = f[u]; i; i = e[i].u){v = e[i].v;if (dis[v] > dis[u] + e[i].w){dis[v] = dis[u] + e[i].w;if (!vis[v]){vis[v] = 1;Q.push(v);}}}}printf("%d\n", dis[te]);}return 0;
}

计蒜客 - 德克萨斯长角牛(最短路)相关推荐

  1. 最短路(遍历边)计蒜客—DD坐地铁

    题目: C 城有 n 个站点, m 条双向地铁,每条地铁有一个 companyicompany_icompanyi​表示它的公司,如果连续乘坐同一家公司的地铁只要花 1元钱就好.DD现在想出门找萨摩耶 ...

  2. 计蒜客 2020 蓝桥杯大学 A 组省赛模拟赛 (一)题目及解析

    新手,欢迎交流,剩下D题不知如何下手,望大佬指教. 计蒜客 2020 蓝桥杯大学 B 组省赛模拟赛 (一)题目及解析 文章目录 A. 结果填空:计算周长 B. 结果填空:七巧板 C. 结果填空:苹果 ...

  3. 坑!计蒜客——乳草的侵占

    计蒜客--乳草的侵占(BFS) BFS一直写不会,可能是多加了个队列,写起来不是太容易.不过最近还是稍微入门了BFS,跟DFS差别不太大,还是由三个部分组成--出口.标记.枚举. DFS的主要的思想就 ...

  4. 计蒜客A1594 封印之门

    传送门:计蒜客A1594 封印之门 文章目录 题目描述: 测试样例: 思路: AC代码: 题目描述: 测试样例: 样例输入: abcd dddd 3 a b b c c d样例输出: 6 思路:    ...

  5. 计蒜客 2020 蓝桥杯大学 B 组省赛模拟赛 (一)题目及解析

    新手,欢迎交流,更新完毕. 计蒜客 2020 蓝桥杯大学 A 组省赛模拟赛 (一)题目及解析 文章目录 A. 结果填空:有趣的数字 B. 结果填空:爬楼梯 C. 结果填空:七巧板 D. 结果填空:苹果 ...

  6. 2020蓝桥杯B 组省赛计蒜客模拟赛(一)题解

    2020蓝桥杯省赛 B 组计蒜客模拟赛(一)目录 试题 A:有趣的数字(结果填空) 试题 B:爬楼梯(结果填空) 试题 C:七巧板(结果填空) 试题 D:苹果(结果填空) 试题 E:方阵(结果填空) ...

  7. 计蒜客2020蓝桥杯大学A组模拟赛题解

    计蒜客2020蓝桥杯大学A组模拟赛题解 蓝桥杯的话,去年拿了C++组的国二.今年报名了新成立的Python组,不知道能不能摸到国一的鱼 模拟赛链接如下: https://www.jisuanke.co ...

  8. 计蒜客 挑战难题 爬楼梯

    计蒜客 挑战难题 爬楼梯 假设你现在正在爬楼梯,楼梯有n级.每次你只能爬1级或者2级,那么你有多少种方法爬到楼梯的顶部? 格式: 第一行输入一个数n(n<=50),代表楼梯的级数. 接下来一行输 ...

  9. 无脑博士的试管们java_计蒜客 无脑博士和他的试管们

    标签: 无脑博士有三个容量分别是A,B,C升的试管,A,B,C分别是三个从1到20的整数,最初,A和B试管都是空的,而C试管是装满硫酸铜溶液的.有时,无脑博士把硫酸铜溶液从一个试管倒到另一个试管中,直 ...

最新文章

  1. AMD:浏览器中的模块规范
  2. 2008年10月热点问题!(Platform)
  3. go kegg_KEGG分析及可视化
  4. CentOS安装Confluence Wiki步骤
  5. PAT乙级 1015 德才论
  6. 如何让网站文章秒收录
  7. 解决The valid characters are defined in RFC 7230 and RFC 3986错误问题
  8. repo/git下载android源码断后重新下载
  9. 贷中客群评级的场景实现,来试试这些多维的实操方法
  10. Google可能退出中国市场
  11. WSO2 ESB / EI / AM 汉化方法
  12. 在uni-app中使用阿里巴巴图标库字体图标
  13. php获取城市接口,根据ip调用新浪api获取城市名并转成拼音
  14. 五问补盲(三) | 补盲激光雷达,敢不敢直面新的安全威胁?
  15. 学习C语言基本思路与参考书籍
  16. 什么是RCT实时时钟?(STM32中RTC时钟源)
  17. 看起来比较舒服的背景颜色值
  18. 鸡兔同笼python程序怎么写_鸡肉的做法大全_怎么做好吃_家常做法_下厨房
  19. 如何运营一个女性社区?
  20. 这个周末很开心 - 虽然脚丫疼

热门文章

  1. 微信小程序 位置定位position详解,相对定位relative,绝对定位absolute相关问题
  2. 华容道html源码,华容道(项目源代码)
  3. SpringBoot22-spingboot数据访问-Spring Data JPA
  4. 查询Mysql版本号的两种方法
  5. 机器学习(五)logistic回归进行二分类以及多分类(Python代码)
  6. 概率论复习笔记二——离散型分布和连续型分布
  7. 情人节单身怎么过? 教你一招,让女神主动约你
  8. czl蒻蒟的OI之路7
  9. gitlab-runner 三种runner创建和和使用
  10. 智行订票系统需求分析报告