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

输入格式:

首先第一行给出两个正整数:网红点的个数 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 条花费相同,但序号较大,所以不输出。

思路:必须从家里走出,并且回到家中,可以先用二维数组双向存图,再判断所给的路是否合法

不合法就跳过此轮循环,最后再找出最短路然后标记下标即可,详情见ac代码注释。

AC代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int s[205][205];
int arr[205];
int vis[205];
int check(int x){//判断所走路线是否合法int sum = s[0][arr[1]];//从家走出来vis[arr[1]] = 1;//所走的路不能重复走for (int i = 2 ; i <= x ;i++){//从家里走到第一个已经便利过第一个了,所以从2开始,x是所给的最后一个打卡点if (vis[arr[i]]){//如果重复走了就不合法return -1;}if (s[arr[i]][arr[i-1]] == 0){return -1;//不存在该条路线 也是不合法的}sum += s[arr[i]][arr[i-1]];vis[arr[i]] = 1;//把走过的标记,不能重复走一个点}sum += s[arr[x]][0];//最后走回家return sum;
}
int main()
{int n,m;cin>>n>>m;while (m--){int u,v,w;cin>>u>>v>>w;s[u][v] = s[v][u] = w;//双向边且不存在重边和自环问题}int t;cin>>t;int cnt = 0,minn = 0x3f3f3f3f,index = 0;for (int i = 1; i <= t ;i++){int a;cin>>a;memset(vis,0,sizeof(vis));for (int j = 1 ; j <= a ;j++){cin>>arr[j];}if (s[0][arr[a]] == 0 || s[0][arr[1]] == 0 || a != n) continue;//不合法跳过此轮int ans = check(a);if (ans != -1){//都是合法的cnt++;if (ans < minn){//找最短路以及记录下标minn = ans;index = i;}}}cout<<cnt<<endl;cout<<index<<" "<<minn<<endl;return 0;
}

PS:多做此类模拟题可以熟能生巧!

PTA 网红点打卡攻略 c++详解相关推荐

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

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

  2. PTA网红点打卡攻略(简单无向图与STL)

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

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

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

  4. 【L2-036 网红点打卡攻略】

    天梯赛L2-036 网红点打卡攻略 题目详情: 输入样例: 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 ...

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

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

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

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

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

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

  8. 7-4 网红点打卡攻略(dfs)

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

  9. L2-036 网红点打卡攻略(Python3)

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

最新文章

  1. 您需要了解有关Angular中的ng-template,ng-content,ng-container和* ngTemplateOutlet的所有信息...
  2. python自带的shell是什么-python shell是什么东西?
  3. 用 Python 对比两个目录下的内容,并生成 Json 文件
  4. HDU1584 蜘蛛牌 DFS回溯
  5. 单片机和微型计算机硬件组成的异同,嵌入式和单片机的区别是什么?两者有什么联系...
  6. Kubernetes详解(十七)——Pod存活性探针应用实战
  7. ERROR 1044 (42000)
  8. wps里的茶色字体怎么设置_VRay茶色玻璃材质参数是什么,要怎么设置?
  9. css图片保持原有尺寸比例
  10. 房地产前期投资阶段及启动阶段目标成本形成过程
  11. 电子设计硬件知识要点(1) 电阻、电容、电感、二极管、三极管
  12. 【C++】关于char * tempbuffer = new char[100];
  13. vue分享到qq,qq空间,微信,微博等
  14. 概率论的学习和整理--番外11:10球里8红球2白球,抽俩次抽中白球的概率是多少呢? 一个例题的不同方法
  15. 初次尝试node爬虫(附赠前端和各种编程词库、coca20000词频表)
  16. 超导量子计算机原型机,【中国科学报】超导量子计算原型机“祖冲之号”问世...
  17. 高分辨率卫星影像能看到什么?
  18. 外星人跑深度学习_P106真香?低成本深度学习平台搭建
  19. 酷开系统8无界空间,打动用户的正确姿势
  20. 图片来自微信公众平台未经许可不可引用|解决经验分享

热门文章

  1. python同切圆_画一组同切圆 画一组同心圆 画一个五角星 画一个黄色实心五角星 turtle.up() turtle.goto(0,-100) turtle.down() ...
  2. 豆豆趣事[2012年07月]
  3. PE49-Prime permutations
  4. Python输出带颜色的文字
  5. css 图片紧贴页面底部,CSS StickyFooter——当内容不足一屏时footer紧贴底部
  6. Vue本地存储及用法
  7. 可变悬挂与空气悬挂的区别_空气悬挂和可变悬架是同样功能吗?
  8. pyinstaller 打包可执行程序,界面左上角图标丢失
  9. ML问题之--并行评估和货币类型的关系分析
  10. C++ 在多线程中使用mciSendString播放音乐 下篇