当前位置: 首页 > news >正文

北海网站设计公司做网站在国外发图片

北海网站设计公司,做网站在国外发图片,onepress wordpress,商城网站的搜索记录代码怎么做题目描述 有n个城市m条道路&#xff08;n<1000, m<10000)&#xff0c;每条道路有个长度&#xff0c;请找到从起点s到终点t的最短距离和经过的城市名。 输入 输入包含多组测试数据。 每组第一行输入四个数&#xff0c;分别为n&#xff0c;m&#xff0c;s&#xff0c;t…
题目描述

有n个城市m条道路(n<1000, m<10000),每条道路有个长度,请找到从起点s到终点t的最短距离和经过的城市名。

输入

输入包含多组测试数据。

每组第一行输入四个数,分别为n,m,s,t。

接下来m行,每行三个数,分别为两个城市名和距离。

输出

每组输出占两行。

第一行输出起点到终点的最短距离。

第二行输出最短路径上经过的城市名,如果有多条最短路径,输出字典序最小的那条。若不存在从起点到终点的路径,则输出“can't arrive”。

样例输入
3 3 1 3
1 3 3
1 2 1
2 3 1
样例输出
2
1 2 3

分析:《算法笔记》上的 dijkstra + DFS 模板题。注意这道题给出的数据里,两点之间有多条边, 之后输入的边会覆盖前面的,每次读入边的时候要比较是否是最短的边。如果用邻接表,因为会把每条边都存,就不会有覆盖的情况。

#include<algorithm>
#include <iostream>
#include  <cstdlib>
#include  <cstring>
#include   <string>
#include   <vector>
#include   <cstdio>
#include    <queue>
#include    <stack>
#include    <ctime>
#include    <cmath>
#include      <map>
#include      <set>
#define INF 0x3fffffff
#define db1(x) cout<<#x<<"="<<(x)<<endl
#define db2(x,y) cout<<#x<<"="<<(x)<<", "<<#y<<"="<<(y)<<endl
#define db3(x,y,z) cout<<#x<<"="<<(x)<<", "<<#y<<"="<<(y)<<", "<<#z<<"="<<(z)<<endl
#define db4(x,y,z,r) cout<<#x<<"="<<(x)<<", "<<#y<<"="<<(y)<<", "<<#z<<"="<<(z)<<", "<<#r<<"="<<(r)<<endl
#define db5(x,y,z,r,w) cout<<#x<<"="<<(x)<<", "<<#y<<"="<<(y)<<", "<<#z<<"="<<(z)<<", "<<#r<<"="<<(r)<<", "<<#w<<"="<<(w)<<endl
using namespace std;int graph[1001][1001];void dijkstra(int n,int s,int t,int d[],vector<int>pre[])
{bool vis[n+5]={0};d[s]=0;for(int times=0;times<n;++times){int u=-1,mini=INF;for(int i=0;i<=n;++i){if(!vis[i]&&d[i]<mini)u=i,mini=d[i];}if(u==-1)return;vis[u]=1;for(int i=0;i<=n;++i){if(!vis[i]&&graph[u][i]!=INF){if(d[i]>d[u]+graph[u][i]){d[i]=d[u]+graph[u][i];pre[i].clear();pre[i].push_back(u);}else if(d[i]==d[u]+graph[u][i]){pre[i].push_back(u);}}}}
}
//用一个vector存储路径经过的点序列,保留字典序最小的
void dfs(vector<int>pre[],int s,int t,vector<int>&ans,vector<int>temp)
{temp.push_back(t);if(t==s){vector<int>rev;for(int i=temp.size()-1;i>=0;--i){rev.push_back(temp[i]);}if(ans.empty()||rev<ans)ans=rev;return;}for(int i=0;i<pre[t].size();++i){dfs(pre,s,pre[t][i],ans,temp);}
}int main(void)
{#ifdef testfreopen("in.txt","r",stdin);
//    freopen("out.txt","w",stdout);clock_t start=clock();#endif //testint n,m,s,t;while(~scanf("%d%d%d%d",&n,&m,&s,&t)){int d[n+5]={0};vector<int>pre[n+5];for(int i=0;i<=n;++i){d[i]=INF;for(int j=0;j<=n;++j)graph[i][j]=INF;}for(int i=0;i<m;++i){int a,b,c;scanf("%d%d%d",&a,&b,&c);if(graph[a][b]>c)graph[a][b]=graph[b][a]=c;}dijkstra(n,s,t,d,pre);if(d[t]==INF)printf("can't arrive\n");else{printf("%d\n",d[t]);vector<int>ans,temp;dfs(pre,s,t,ans,temp);for(int i=0;i<ans.size();++i)printf("%d ",ans[i]);printf("\n");}}#ifdef testclockid_t end=clock();double endtime=(double)(end-start)/CLOCKS_PER_SEC;printf("\n\n\n\n\n");cout<<"Total time:"<<endtime<<"s"<<endl;        //s为单位cout<<"Total time:"<<endtime*1000<<"ms"<<endl;    //ms为单位#endif //testreturn 0;
}

http://www.dtcms.com/a/424169.html

相关文章:

  • 东莞网站建设美丽做网站的IDE
  • Python基础(②④序列化和伪造Session)
  • C++ 标准库排序算法 std::sort 使用详解
  • 进程间通信——环境问题
  • html做网站步骤大全泉州网站建设咨询
  • 网站备案要多长时间网站建设的功能需求分析策划书
  • 安卓基础007-第一章结束
  • join left join right join 关联问题
  • 从接口概念到客达天下系统Apifox+DeepSeek接口测试实战
  • vue 中 props 用法使用总结和示例演示
  • SymPy 绘图完全指南:从基础到高级应用
  • C语言基础入门(二)
  • ClientAbortException: java.io.IOException: Broken pipe是什么?
  • 书店网站建设个人总结惠州网页建站模板
  • 西安 网站建设 培训班常州做网站公司有哪些
  • 嵌入式系统应用--TFTLCD 显示实验 3 之内存拓展
  • TEE(可信执行环境)与REE(富执行环境):构建现代智能设备的安全基石与技术全景
  • 网站开发洲际做网站如何接单子
  • 如何查看网站推广做的好云南省玉溪市建设局官方网站
  • ui设计网站建设是什么意思erp系统有哪些功能模块
  • Python将维吾尔语从 ULY 到 UEY 的自动转换
  • Spring AI整合聊天模型DeepSeek
  • 做国外网站做什么内容好无锡市城市建设规划局网站
  • 软装设计网站推荐湖南畅想网站建设
  • 手机电影网站怎么做wordpress邮箱登录
  • 圆桌对话 | “内卷”与“出海”:中国智能网联汽车的破局之路与未来生态构想
  • 网站建设开头wordpress go
  • 门户子网站建设申请微页制作平台网站建设
  • linux拷贝命令
  • 遥感目标检测数据集汇总,覆盖城市问题/工业安全/农业健康/室内场景……