7-14 直捣黄龙 (30 分)
本题是一部战争大片 —— 你需要从己方大本营出发,一路攻城略地杀到敌方大本营。首先时间就是生命,所以你必须选择合适的路径,以最快的速度占领敌方大本营。当这样的路径不唯一时,要求选择可以沿途解放最多城镇的路径。若这样的路径也不唯一,则选择可以有效杀伤最多敌军的路径。

输入格式:
输入第一行给出2个正整数N(2 ≤ N ≤ 200,城镇总数)和K(城镇间道路条数),以及己方大本营和敌方大本营的代号。随后N-1行,每行给出除了己方大本营外的一个城镇的代号和驻守的敌军数量,其间以空格分隔。再后面有K行,每行按格式城镇1 城镇2 距离给出两个城镇之间道路的长度。这里设每个城镇(包括双方大本营)的代号是由3个大写英文字母组成的字符串。

输出格式:
按照题目要求找到最合适的进攻路径(题目保证速度最快、解放最多、杀伤最强的路径是唯一的),并在第一行按照格式己方大本营->城镇1->…->敌方大本营输出。第二行顺序输出最快进攻路径的条数、最短进攻距离、歼敌总数,其间以1个空格分隔,行首尾不得有多余空格。

输入样例:

10 12 PAT DBY
DBY 100
PTA 20
PDS 90
PMS 40
TAP 50
ATP 200
LNN 80
LAO 30
LON 70
PAT PTA 10
PAT PMS 10
PAT ATP 20
PAT LNN 10
LNN LAO 10
LAO LON 10
LON DBY 10
PMS TAP 10
TAP DBY 10
DBY PDS 10
PDS PTA 10
DBY ATP 10

输出样例:

PAT->PTA->PDS->DBY
3 30 210

这个题很多细节,包括多条最短路和点权和最大等问题,这里有简化版的这道题https://blog.csdn.net/g1129qaz/article/details/108672245?spm=1001.2014.3001.5501简化版的做对,才有可能做对这道
代码:

#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
#define N 1000000
using namespace std;
int n,k;
map<string,int>vis;
map<int,string>vis2;
int num[201];
int sum[201];
int Map[201][201];
int pre[201];
int pace[201];
int dis[201];
int book[201];
int path[201];
void init()
{for(int i=0; i<n; i++){for(int j=0; j<n; j++){if(i!=j){Map[i][j]=Map[j][i]=INF;}}}
}
void dij(int s)
{for(int i=0;i<n;i++){dis[i]=Map[0][i];pace[i]=1;sum[i]=num[i];}book[s]=1;for(int i=0; i<n-1; i++){int minn=INF;int u=-1;for(int j=0; j<n; j++){if(!book[j]&&minn>dis[j]){minn=dis[j];u=j;}}if(u==-1){break;}book[u]=1;for(int j=0; j<n; j++){if(!book[j]){if(dis[j]>dis[u]+Map[u][j]){//cout<<u<<" "<<j<<endl;dis[j]=dis[u]+Map[u][j];pre[j]=u;pace[j]=pace[u];sum[j]=num[j]+sum[u];path[j]=path[u]+1;}else if(dis[j]==dis[u]+Map[u][j]){if(pre[j]!=u){pace[j]+=pace[u];}if(path[j]<path[u]+1){path[j]=path[u]+1;pre[j]=u;sum[j]=num[j]+sum[u];}if(path[j]==path[u]+1){if(sum[j]<num[j]+sum[u]){sum[j]=num[j]+sum[u];pre[j]=u;}}}}}/*for(int i=0;i<n;i++){cout<<pre[i]<<" ";}cout<<endl;*/}
}int main()
{string str1,str2,str,x,y;int p;cin>>n>>k>>str1>>str2;vis[str1]=0;vis2[0]=str1;for(int i=1; i<=n-1; i++){cin>>str>>num[i];vis[str]=i;vis2[i]=str;}init();while(k--){cin>>x>>y>>p;Map[vis[x]][vis[y]]=Map[vis[y]][vis[x]]=p;}int s=vis[str1];dij(s);int rode[201];int cnt=0;int End=vis[str2];int cut=End;rode[cnt++]=End;while(pre[cut]!=0){rode[cnt++]=pre[cut];cut=pre[cut];}rode[cnt++]=0;int flag=0;for(int i=cnt-1; i>=0; i--){if(!flag){cout<<vis2[rode[i]];flag=1;}else{cout<<"->"<<vis2[rode[i]];}}cout<<endl;/*for(int i=0;i<n;i++){cout<<sum[i]<<endl;}*/cout<<pace[End]<<" "<<dis[End]<<" "<<sum[End]<<endl;return 0;
}

7-14 直捣黄龙 (30 分)相关推荐

  1. 【CCCC】L3-011 直捣黄龙 (30分),Dijkstra维护点权,节点数,路径条数等+路径打印

    problem L3-011 直捣黄龙 (30分) 本题是一部战争大片 -- 你需要从己方大本营出发,一路攻城略地杀到敌方大本营.首先时间就是生命,所以你必须选择合适的路径,以最快的速度占领敌方大本营 ...

  2. 马上要参加天梯赛分享优质题目-L3-011 直捣黄龙 (30分)---三个关键字的最短路径算法

    L3-011 直捣黄龙 (30分) 本题是一部战争大片 -- 你需要从己方大本营出发,一路攻城略地杀到敌方大本营.首先时间就是生命,所以你必须选择合适的路径,以最快的速度占领敌方大本营.当这样的路径不 ...

  3. java定时14点30分_单机定时任务的四种基本实现方式

    引言 在实际项目开发中,定时任务调度是经常会出现的一类需求. 定时任务的场景可以说非常广泛,例如: 购买某些视频网站的会员后,每天给会员送成长值,每月给会员送电影券 在保证最终一致性的场景中,利用定时 ...

  4. L3-011 直捣黄龙 (30 分)-PAT 团体程序设计天梯赛 GPLT

    本题是一部战争大片 -- 你需要从己方大本营出发,一路攻城略地杀到敌方大本营.首先时间就是生命,所以你必须选择合适的路径,以最快的速度占领敌方大本营.当这样的路径不唯一时,要求选择可以沿途解放最多城镇 ...

  5. map映射-----基础实验8-1.2 直捣黄龙 (30分)

    本题是一部战争大片 -- 你需要从己方大本营出发,一路攻城略地杀到敌方大本营.首先时间就是生命,所以你必须选择合适的路径,以最快的速度占领敌方大本营.当这样的路径不唯一时,要求选择可以沿途解放最多城镇 ...

  6. L3-011 直捣黄龙 (30 分)

    这题用dijkstra就行了,pre记录路径的父节点,cnt记录路径的总点数,sum记录最短路径条数,peo记录杀敌数 #include <bits/stdc++.h> using nam ...

  7. 为何把2点半比作是神奇的2点半? 为什么炒股的人叫14:30分,叫神奇的2点

    为何把14:30分称作神奇的2点半? 为什么炒股的人叫14:30分,叫神奇的2点半?这个得从头开始说起! 第一个是早盘:9:30-9:50,请一般散户不要参与!这是主力展示盘口语言的时间段,自认为水平 ...

  8. PTA 直捣黄龙(30分)

    直捣黄龙 (30 分) 本题是一部战争大片 -- 你需要从己方大本营出发,一路攻城略地杀到敌方大本营.首先时间就是生命,所以你必须选择合适的路径,以最快的速度占领敌方大本营.当这样的路径不唯一时,要求 ...

  9. PTA 直捣黄龙 (30 分)

    7-13 直捣黄龙 (30 分) 本题是一部战争大片 -- 你需要从己方大本营出发,一路攻城略地杀到敌方大本营.首先时间就是生命,所以你必须选择合适的路径,以最快的速度占领敌方大本营.当这样的路径不唯 ...

最新文章

  1. Linux rm过滤后的目录6,Linux的部分命令
  2. ADC/DAC设计常见40问
  3. 算法:ACM二分图匹配 HDU2063
  4. python语言if语句-Python if else语句详解
  5. 关联规则(Association Rules)笔记
  6. Vista操作系统评估参考资料
  7. idea 2020版的Default Setting
  8. svn添加到windows服务中
  9. android 禁止屏幕放大缩小,禁止APP内Webview页面跟随系统缩放字号
  10. 【openMV】色块追踪
  11. 相聚“金巴蜀”、付诸笑谈中
  12. 思科安全代理 CSA 概述
  13. Pyhton网络爬虫实例_豆瓣电影排行榜_Xpath方法爬取
  14. Collectors.averagingInt
  15. Python还有发展前景吗?现在该怎么去学习?
  16. gps高斯utm_UTM投影分带计算与高斯投影分带计算
  17. LeetCode——5776. 判断矩阵经轮转后是否一致(Determine Whether Matrix Can Be Obtained By Rotation)[简单]——分析及代码(Java)
  18. 京东大图在服务器哪个文件夹,京东图片管理在哪里?怎么使用?
  19. 生信笔记 | 探索PubMed数据库文献
  20. 概率论几大分布的期望和方差证明整合

热门文章

  1. python-三角函数
  2. linux系统的界面是什么样的,Linux系统是什么样子的
  3. 【Kubernetes系列】Pod
  4. 服务器生成js文件,Next.js 静态生成和服务器端渲染
  5. matlab地球绕太阳,matlab 怎么做地球绕太阳转 同时 月球绕地球转 动态的 可以做成圆周运动 二维的 一分钟左右...
  6. 计算机触摸板设置方法,笔记本电脑触摸板如何开关 笔记本电脑触摸板设置方法【详解】...
  7. [LUOGU] P4363 [九省联考2018]一双木棋chess
  8. 回顾 | Teams + Power Platform低代码数字化技术融合趋势
  9. [百合原帖]由《联合早报》的一篇文章……
  10. 赛门铁克召开2010财年中国合作伙伴高峰会