Description

​ZJ和ZCX在一起很久了,两个人都互生爱意,最终决定喜结良缘,从此踏入浪漫的婚姻殿堂。

但是,ZJ的好基友们想到以后ZJ就不能经常跟他们一起愉快的玩耍了,都觉得非常伤心难过,于是他们决定在最后一晚为ZJ开一场单身晚会,玩整晚紧张刺激的飞行棋。

ZJ的好基友居住在城市的各个地方(每个地方不一定只有一个基友),他们需要从各个地方赶到其中一个朋友的家里来参加这最后的单身PARTY,ZJ被基友们的热情深深感动了,决定对基友们来时的路费进行报销。报销规则按照距离来计算。基友们为了帮ZJ省钱,决定在所有人走最短路径的情况下,总距离最小的人的家里开PARTY。

ZJ想知道基友们走过的总距离是多少,然后他把总共需要报销的钱拿出来,就可以让基友们自己来分配了。但是他算了半天也没算出来总距离是多少,单身PARTY马上就开始了,你能帮帮他吗?

Input

第一行一个整数T,表示有T(T<15)组数据

每组数据的第一行基友数(包括ZJ)N(N<100),路口P(2<=P<=100),路口之间道路数C(1<=C<=1450),(基友的编号为1…N,路口的编号为1…P)

第二行到第N+1行:编号为1到N的基友们家所在的路口号。

第N+2行到N+C+1行:每行有三个数:相连的路口A,B,路口间间距D(1<=D<=255),当然,连接是双向的。

Output

每组数据输出占一行,输出大家必须要走的最小距离和

Sample Input

1
3 4 5
2
3
4
1 2 1
1 3 5
2 3 7
2 4 3
3 4 5

Sample Output

8
题解:
去年省赛的一道图论题,裸的最短路,直接枚举每个路口跑spfa或者dij。
代码:
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define INF 0x3f3f3f3f
 4 #define M(a, b) memset(a, b, sizeof(a))
 5 const int N = 100 + 5;
 6 int d[N], p[N], cnt[N], inq[N], n;
 7 struct Node {
 8     int to, w;
 9 };
10 vector<Node> G[N];
11
12 queue<int> q;
13 void spfa(int s) {
14     M(d, INF); M(inq, 0);
15     while (!q.empty()) q.pop();
16     q.push(s); inq[s] = 1; d[s] = 0;
17     while (!q.empty()) {
18         int u = q.front(); q.pop();
19         inq[u] = 0;
20         for (int i = 0; i < G[u].size(); ++i) {
21             int v = G[u][i].to, w = G[u][i].w;
22             if (d[v] > d[u] + w) {
23                 d[v] = d[u] + w;
24                 if (inq[v]) continue;
25                 inq[v] = 1;
26                 q.push(v);
27             }
28         }
29     }
30 }
31
32 int main() {
33     int m, c, T;
34     scanf("%d", &T);
35     while (T--) {
36         scanf("%d%d%d", &n, &m, &c);
37         for (int i = 1; i <= m; ++i) G[i].clear();
38         for (int i = 1; i <= n; ++i) scanf("%d", &p[i]);
39         int u, v, w;
40         for (int i = 1; i <= c; ++i) {
41             scanf("%d%d%d", &u, &v, &w);
42             G[u].push_back(Node{v, w});
43             G[v].push_back(Node{u, w});
44         }
45         int ans = INF;
46         for (int i = 1; i <= m; ++i) {
47             spfa(i);
48             int temp = 0;
49             for (int j = 1; j <= n; ++j) {
50                 temp += d[p[j]];
51             }
52             ans = min(ans, temp);
53         }
54         printf("%d\n", ans);
55     }
56
57
58     return 0;
59 }

转载于:https://www.cnblogs.com/robin1998/p/6718458.html

HFUT-1360 单身晚会 【SPFA】相关推荐

  1. 研究生迎新晚会计算机学院祝福语,大学生迎新晚会祝福语

    1. 新学期,让我们都加油去超越自己,开心享受青春岁月的绚丽多彩,把每一个日子都串起,编织一条闪亮的珍珠,藏在心灵深处.开学日快乐! 2. 开学了,踏上知识的沃土,尽情汲取;踏上学问的方舟,尽情驰骋; ...

  2. 研究生迎新晚会计算机学院祝福语,[迎新晚会家长祝福语]迎新晚会祝福语

    迎新晚会家长祝福语篇1 1.带上自信的笑容,装满努力的决心,背好书包,向知识的海洋进军,为明天的美好读书,为人生辉煌加油,开学日,奔赴学堂,为梦想而努力,加油! 新学期祝福语. 2.金秋到来清风爽,开 ...

  3. 支付宝到账配音女神,5亿人听过她的声音,31岁依旧单身

    击上方的终端研发部,右上角选择"设为星标" 每日早10点半,技术文章准时送上 公众号后台回复"学习",获取作者独家秘制精品资料 前言 随着互联网的发展,移动支付 ...

  4. NOIP模拟题 2016.11.15 [LIS] [spfa] [同余最短路] [矩阵快速幂] [容斥原理] [数学]

    小L的二叉树 [题目描述] 勤奋又善于思考的小L接触了信息学竞赛,开始的学习十分顺利.但是,小L对数据结构的掌握实在十分渣渣. 所以,小L当时卡在了二叉树. 在计算机科学中,二叉树是每个结点最多有两个 ...

  5. BZOJ 1003[ZJOI2006]物流运输(SPFA+DP)

    Problem 1003. -- [ZJOI2006]物流运输 1003: [ZJOI2006]物流运输 Time Limit: 10 Sec  Memory Limit: 162 MB Submit ...

  6. spfa(还不懂--)

    粗略讲讲SPFA算法的原理,SPFA算法是1994年西安交通大学段凡丁提出 是一种求单源最短路的算法 算法中需要用到的主要变量 int n;  //表示n个点,从1到n标号 int s,t;  //s ...

  7. sdut AOE网上的关键路径(spfa+前向星)

    http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2498&cid=1304 题目描述 一个无环的有向图称为无环图(Directed Acyc ...

  8. poj 3662 Telephone Lines spfa算法灵活运用

    意甲冠军: 到n节点无向图,它要求从一个线1至n路径.你可以让他们在k无条,的最大值.如今要求花费的最小值. 思路: 这道题能够首先想到二分枚举路径上的最大值,我认为用spfa更简洁一些.spfa的本 ...

  9. 1003 Emergency(Dijkstra,Bellman-Ford,SPFA三种解法)

    目录 1. Dijkstra解法 2. Bellman-Ford解法 3. SPFA解法 4. Dijkstra解法AC代码 5. Bellman-Ford解法AC代码 6. SPFA解法AC代码 1 ...

最新文章

  1. 第一章:1.1 信号表征
  2. vagrant 配置并启动
  3. python 打造一个sql注入脚本 (一)
  4. gogs可以自动化部署吗_三千、五千平方的仓库房可以用自动化立体仓库吗?
  5. ExtJs2.0学习系列(6)--Ext.FormPanel之第三式(ComboBox篇)
  6. new 对象时的暗执行顺序
  7. Facebook发布张量理解库,自动编译高性能机器学习核心
  8. 在REUSE_ALV_GRID_DISPLAY_LVC后获取GRID
  9. 数据结构(C++)—— 向量(Vector)
  10. PHP魔术方法和魔法变量详解
  11. ASP.NET生成Excel并下载
  12. 计算机主机光驱弹不出来怎么办,win7系统电脑按下光驱按钮托盘就是弹不出来怎么办...
  13. 用计算机配置打印机IP,如何修改打印机IP地址?
  14. VMware Workstation12安装win 7企业版激活
  15. TP6微信公众号登陆授权
  16. oracle java.sql.SQLException: ORA-00911: 无效字符和ORA-01017: invalid username/password; logon denied
  17. RAID卡及其管理工具
  18. 你有脑回千百转,我只用一招鲜
  19. 深度学习真的working吗
  20. 基于matlab的脉冲多普勒测距、测速、实现测速以及测距功能

热门文章

  1. android短信导入ios,手动将iPhone短信导入Android手机方法
  2. 【读论文】An Object-Based Approach for Urban Land Cover Classification(2013)
  3. 2022年制冷与空调设备运行操作操作证考试题模拟考试平台操作
  4. c语言 在txt文件中搜索关键词_请输入搜索关键字
  5. AVR JTAG仿真器制作资料
  6. springboot禁用security
  7. 千禧年七大难题之 P = NP
  8. ffmpeg 代码实现将mp4 mov 信息置于文件头
  9. openwrt下载安装中文语言包(离线版)
  10. 2022 个人目标日历定作工具 微信小程序源码