一个旅游景点,如果被带火了的话,就被称为“网红点”。大家来网红点游玩,俗称“打卡”。在各个网红点打卡的快(省)乐(钱)方法称为“攻略”。你的任务就是从一大堆攻略中,找出那个能在每个网红点打卡仅一次、并且路上花费最少的攻略。

输入格式:

首先第一行给出两个正整数:网红点的个数 N(1<N≤200)和网红点之间通路的条数 M。随后 M 行,每行给出有通路的两个网红点、以及这条路上的旅行花费(为正整数),格式为“网红点1 网红点2 费用”,其中网红点从 1 到 N 编号;同时也给出你家到某些网红点的花费,格式相同,其中你家的编号固定为 0

再下一行给出一个正整数 K,是待检验的攻略的数量。随后 K 行,每行给出一条待检攻略,格式为:

n V1​ V2​ ⋯ Vn​

其中 n(≤200) 是攻略中的网红点数,Vi​ 是路径上的网红点编号。这里假设你从家里出发,从 V1​ 开始打卡,最后从 Vn​ 回家。

输出格式:

在第一行输出满足要求的攻略的个数。

在第二行中,首先输出那个能在每个网红点打卡仅一次、并且路上花费最少的攻略的序号(从 1 开始),然后输出这个攻略的总路费,其间以一个空格分隔。如果这样的攻略不唯一,则输出序号最小的那个。

题目保证至少存在一个有效攻略,并且总路费不超过 109。

输入样例:

6 13
0 5 2
6 2 2
6 0 1
3 4 2
1 5 2
2 5 1
3 1 1
4 1 2
1 6 1
6 3 2
1 2 1
4 5 3
2 0 2
7
6 5 1 4 3 6 2
6 5 2 1 6 3 4
8 6 2 1 6 3 4 5 2
3 2 1 5
6 6 1 3 4 5 2
7 6 2 1 3 4 5 2
6 5 2 1 4 3 6

输出样例:

3
5 11

样例说明:

第 2、3、4、6 条都不满足攻略的基本要求,即不能做到从家里出发,在每个网红点打卡仅一次,且能回到家里。所以满足条件的攻略有 3 条。

第 1 条攻略的总路费是:(0->5) 2 + (5->1) 2 + (1->4) 2 + (4->3) 2 + (3->6) 2 + (6->2) 2 + (2->0) 2 = 14;

第 5 条攻略的总路费同理可算得:1 + 1 + 1 + 2 + 3 + 1 + 2 = 11,是一条更省钱的攻略;

第 7 条攻略的总路费同理可算得:2 + 1 + 1 + 2 + 2 + 2 + 1 = 11,与第 5 条花费相同,但序号较大,所以不输出。

这里力荐柳婼的题解,详情请点击链接查看。科普一个小知识c++的fill()函数。

#include <bits/stdc++.h>
using namespace std;
int N, M, K, u, v, w, n, flag, cost, Ansnum, Ansid, Anscost = INT_MAX, Edge[201][201], Path[202], Has[201];
int main() {cin >> N >> M;for (int i = 0; i < M; i++) {cin >> u >> v >> w;Edge[u][v] = Edge[v][u] = w;}cin >> K;for (int i = 1; i <= K; i++) {fill(Has, Has + N + 1, 0);Path[N + 1] = flag = cost = 0;cin >> n;for (int j = 1; j <= n; j++){cin >> Path[j];if(Has[Path[j]]) Has[0] = 1;Has[Path[j]] = 1;}if (Has[0] || n != N) continue;for (int j = 1; j <= n + 1; j++) {if (Edge[Path[j-1]][Path[j]] == 0) {flag = 1;break;}cost += Edge[Path[j - 1]][Path[j]];}if (!flag) {Ansnum++;if(cost < Anscost) Ansid = i, Anscost = cost;}}cout << Ansnum << '\n' << Ansid << ' ' << Anscost;return 0;
}

7-10 网红点打卡攻略 (25 分)——天梯赛综合练习-3相关推荐

  1. 重返天梯-L2-036 网红点打卡攻略 (25 分)

    重返天梯-L2-036 网红点打卡攻略 (25 分) C++ 有点小坑,所以记录一下 #include <bits/stdc++.h> using namespace std; const ...

  2. L2-036 网红点打卡攻略 (25 分)(哈密顿回路)

    题目链接: 题目详情 - L2-036 网红点打卡攻略 (25 分) (pintia.cn)https://pintia.cn/problem-sets/994805046380707840/prob ...

  3. L2-036 网红点打卡攻略 (25 分)-PAT 团体程序设计天梯赛 GPLT

    一个旅游景点,如果被带火了的话,就被称为"网红点".大家来网红点游玩,俗称"打卡".在各个网红点打卡的快(省)乐(钱)方法称为"攻略".你的 ...

  4. 7-2 网红点打卡攻略 (25 分)java版

    一个旅游景点,如果被带火了的话,就被称为"网红点".大家来网红点游玩,俗称"打卡".在各个网红点打卡的快(省)乐(钱)方法称为"攻略".你的 ...

  5. L2-036 网红点打卡攻略 (25 分)

    一个旅游景点,如果被带火了的话,就被称为"网红点".大家来网红点游玩,俗称"打卡".在各个网红点打卡的快(省)乐(钱)方法称为"攻略".你的 ...

  6. L2-4 网红点打卡攻略 (25 分)

    一个旅游景点,如果被带火了的话,就被称为"网红点".大家来网红点游玩,俗称"打卡".在各个网红点打卡的快(省)乐(钱)方法称为"攻略".你的 ...

  7. 1、网红点打卡攻略 (25 分)

    一个旅游景点,如果被带火了的话,就被称为"网红点".大家来网红点游玩,俗称"打卡".在各个网红点打卡的快(省)乐(钱)方法称为"攻略".你的 ...

  8. L2-036 网红点打卡攻略 (25 分)(图论)

    一个旅游景点,如果被带火了的话,就被称为"网红点".大家来网红点游玩,俗称"打卡".在各个网红点打卡的快(省)乐(钱)方法称为"攻略".你的 ...

  9. 【数据结构与算法暑期实习】PTA 网红点打卡攻略

    PTA 网红点打卡攻略 一.题目 二.思路 三.代码 一.题目 一个旅游景点,如果被带火了的话,就被称为"网红点".大家来网红点游玩,俗称"打卡".在各个网红点 ...

最新文章

  1. 湖大和厦大计算机专硕6,【图片】一战厦大计算机上岸,经验帖。慢更【考研吧】_百度贴吧...
  2. Machine Learning week 5 quiz: programming assignment-Multi-Neural Network Learning
  3. 小白科普:虚拟化简史
  4. 聚集索引和非聚集索引
  5. python软件是哪个国家的品牌_有哪些好用的软件被国人误认为是外国研发的?
  6. [PyTorch] 保存模型和恢复模型
  7. flex布局怎么设置子元素大小_Web前端(三):前端布局
  8. js本地存储解决方案(localStorage与userData)
  9. 重复的事情让机器来做,简化的思想
  10. 老板口中的一区二区是什么意思?
  11. PCS7服务器数据包安装位置,PCS7中应用PH服务器的配置问题
  12. 2019面试宝典之.Net
  13. 浏览器无法访问百度的问题
  14. 《Photoshop修饰与合成专业技法》—第1章伪造的抠像:第一部分
  15. 【Linux-GNU编译器套件(gcc/g++/gfortran)离线编译安装】
  16. Apache DolphinScheduler征稿 — 小Demo轻松入门DolphinSchedule大数据调度工具
  17. python中的抽象类
  18. 2021练习题Python的
  19. 大华摄像头使用外网进行访问管理
  20. python多进程多线程,多个程序同时运行

热门文章

  1. c语言结构体数组内存大小,如何为C语言的结构体数组分配/释放内存?
  2. Reflect介绍,及常用的方法
  3. 机械革命s1pro 拆机教程
  4. damn small linux试玩
  5. Ultimate Retouch Panel for Mac(PS磨皮插件)
  6. STM32F4_通过RS232实现和PC端通讯
  7. 苹果手机上网很慢_豁然开朗!原来手机网络信号不好是这么回事!
  8. java 元数据 注解_Java:注解(元数据)
  9. Spring基于注解TestContext 测试框架使用详解
  10. mvc ajax 删除数据,.Net MVC4 使用心得(四)分页、Partial View、删除、ajax返回