2. 旅行计划

★☆   输入文件: djs.in   输出文件: djs.out   简单对比
时间限制:3 s   内存限制:128 MB

过暑假了,阿杜准备出行旅游,他已经查到了某些城市的两两之间的距离及可行路线(可行路线有方向),如下图所示。请你编程计算从阿杜所住城市到其它城市的最短路径以帮助阿杜制定旅行计划。

【输入格式】

输入由若干行组成,第一行有三个整数,$n(1≤n≤100)、m(1≤m≤n^2)、v(1≤m≤n)$;城市数,$m$城市间道路数,$v$是阿杜所住城市。第$2$至$m+1$行是每条路的信息,每行三个整数,为道路的起点、终点和两城市间距离。(城市从0开始编号)

【输出格式】

n组(按城市编号由小至大),每组三行

第一行:城市编号及一个冒号

第二行:path及一个冒号,后面是最短路径节点编号序列(编号间用一个空格隔开)

第三行:cost及一个冒号,后面是一个整数,表示路径距离

如果没有通路则输出 no

【输入样例】

6 8 0
0 2 10
0 4 30
0 5 100
1 2 5
2 3 50
3 5 10
4 3 20
4 5 60

【输出样例】

0:
no
1:
no
2:
path:0 2
cost:10
3:
path:0 4 3
cost:50
4:
path:0 4
cost:30
5:
path:0 4 3 5
cost:60

AC代码:

#include<cstdio>
#include<cstring>
#include<queue>
#define pir pair<int,int>
using namespace std;
const int N=1e5+10;
struct node{int v,w,next;
}e[N<<1];
int tot,head[N];
int n,m,S,dis[N],qq[N];
bool vis[N];
void add(int x,int y,int z){e[++tot].v=y;e[tot].w=z;e[tot].next=head[x];head[x]=tot;
}
void dijkstra(){priority_queue<pir,vector<pir>,greater<pir> >q;memset(dis,0x3f3f3f3f,sizeof dis);q.push(make_pair(dis[S]=0,S));while(!q.empty()){pir h=q.top();q.pop();int x=h.second;if(vis[x]) continue;vis[x]=1;for(int v,w,i=head[x];i;i=e[i].next){v=e[i].v;w=e[i].w;if(!vis[v]&&dis[v]>dis[x]+w){q.push(make_pair(dis[v]=dis[x]+w,v));qq[v]=x;}}}
}
void out(int x){if(qq[x]==-1) return ;out(qq[x]);printf("%d ",x);
}
int main(){freopen("djs.in","r",stdin);freopen("djs.out","w",stdout);memset(qq,-1,sizeof qq);scanf("%d%d%d",&n,&m,&S);for(int i=1,x,y,z;i<=m;i++){scanf("%d%d%d",&x,&y,&z);add(x,y,z);}dijkstra();for(int i=0;i<n;i++){if(i==S) printf("%d:\nno\n",S);else if(dis[i]==0x3f3f3f3f) printf("%d:\nno\n",i);else{printf("%d:\n",i);printf("path:%d ",S);out(i);putchar('\n');printf("cost:%d\n",dis[i]);}}fclose(stdin);fclose(stdout);return 0;
}

转载于:https://www.cnblogs.com/shenben/p/6045921.html

COGS 2. 旅行计划相关推荐

  1. 牛客ACM赛 B [小a的旅行计划 ]

    链接 B 小a的旅行计划 把\(n\)个数中选任意数分成\(a,b\)两个集合,集合无区别,要求不包含且有交,求方案数.\(n\leq 10^{13}\) 首先讨论\(a,b\)并集是否为全集: 若是 ...

  2. 【拓扑排序】【DP】旅行计划(luogu 1137)

    旅行计划 luogu 1137 题目大意: 有一堆点,之间连接着一些边(有向),保证无环,现在要求出从任意地方出发到所有点的最长路(出发点不一定相同) 原题: 题目描述 小明要去一个国家旅游.这个国家 ...

  3. 51nod 1273 旅行计划——思维题

    某个国家有N个城市,编号0 至 N-1,他们之间用N - 1条道路连接,道路是双向行驶的,沿着道路你可以到达任何一个城市.你有一个旅行计划,这个计划是从编号K的城市出发,每天到达一个你没有去过的城市, ...

  4. 丽思卡尔顿游轮正式加入万豪旅享家旅行计划

    上海2021年12月9日 /美通社/ -- 万豪国际集团旗下享誉盛名的的旅行计划万豪旅享家(Marriott Bonvoy®)近日宣布,丽思卡尔顿游轮于2021年11月9日起正式加入该计划.丽思卡尔顿 ...

  5. 动态规划+vector解旅行计划问题

    动态规划+vector解旅行计划问题 题目描述 小明要去一个国家旅游.这个国家有#N个城市,编号为1至N,并且有M条道路连接着,小明准备从其中一个城市出发,并只往东走到城市i停止. 所以他就需要选择最 ...

  6. 2023北京旅行计划 2023带父母北京旅行计划

    2023北京旅行计划 2023带父母北京旅行计划 一.概述 2023年开始啦,疫情也差不多告别一段落. 准备安排父母来我工作的城市 --- 北京,旅行一番,逛一逛,看一看. 大致的事项:1. 体检 : ...

  7. 从零开始学微信小程序开发:6 旅行计划调查

    小程序对HTML5表单及表单元素进行了封装,提供了丰富的表单组件. 6.1 用form组件收集信息 form(表单)也是前端视图层与后端服务层交互过程中最重要的信息来源. 小程序的form组件具有一些 ...

  8. 【洛谷】P1137旅行计划

    [洛谷]P1137旅行计划 题目描述 小明要去一个国家旅游.这个国家有N个城市,编号为1至N,并且有M条道路连接着,小明准备从其中一个城市出发,并只往东走到城市i停止. 所以他就需要选择最先到达的城市 ...

  9. C++ P0002 旅行计划

    题目:旅行计划 第一次搞输出多个最短路径,搞了有一会儿,方法不太好,有更好的方法可以教me! # include <iostream> # include <cstdio> # ...

最新文章

  1. 超干货3D视觉技术分享+人才内推!独角兽奥比中光与你相约VALSE 2021
  2. Selenium指定浏览器路径
  3. Ubuntu安装deb软件包错误(依赖关系问题)解决
  4. Linux下的shell编程入门
  5. Linux笔记-给Linux配置DNS
  6. opencv光流例程_OpenCV 4.4 发布!新增YOLOv4 和 EfficientDet 推断支持
  7. 在AJAX中可以使用的Response.Redirect 的冲突解决办法
  8. 基于斥力-张力模型的网络拓扑布局算法(php代码)
  9. 增强安全性、支持跨页逻辑关系设定的电信运营级EnableQ在线问卷调查引擎V1.60来了...
  10. 你还因为缺“Java项目经验”找不到工作?适合应届生的20个“项目经验”送给你
  11. MarkDown学习手册
  12. 网站流量的算法是怎么算的?网站每月10G流量够用吗
  13. 那些看着高大上的名词
  14. conda创建环境并下载d2l软件包
  15. 求助,电脑关闭游戏后自动弹出dptf
  16. 《MFC如何屏蔽ESC和Enter按键退出应用程序》
  17. [Scala基础]--Scala构建超过22个元素的class
  18. 0805封装电容谐振频率
  19. 服务器系统日志满了怎么办,服务器事务日志已满解决方法
  20. 第六天 多线程和多进程

热门文章

  1. 98年计算机学什么课程,那些年,计算机领域的绝世高手
  2. BZOJ 4517 浅谈错位排列组合计数
  3. 英语口语笔记B1-Unit06.社交活动-01-Where should we go for dinner
  4. LL1_SLR1_LR1语法分析C++实现
  5. 荧光染料CY3/CY5/CY5.5聚已内酯PLA载药纳米粒CY3-PLA|CY5-SS-PEG-PLA|CY5.5-PLA(定制供应)
  6. Word Formation
  7. 怎么检查服务器虚拟内存,服务器怎么查看虚拟内存
  8. 分组交换和电路交换的区别
  9. 【java】获取昨天、今天、明天、几天前、几天后的时间
  10. 树莓派——智能家居第一步