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

网站建设规划书范文5000字中国建设银行黑龙江支行官方网站

网站建设规划书范文5000字,中国建设银行黑龙江支行官方网站,西安网站seo外包,用ps设计网页页面步骤题目描述 有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/wzjs/818101.html

相关文章:

  • 青岛做网站公小程序怎么开发自己的
  • 有了主机和域名后如何做网站手机销售网站怎么做的
  • 网站免费建站 图标网站建设seo优化价格
  • 网站开发+兼职挣钱吗网站建设评比
  • 美食网站页面设计源代码企业网站建站元素
  • 怎么制作一个自己的网站前端页面设计网站
  • 泰安建站哪家好国内三大oa系统
  • 做网站apache如何筑巢网站建设
  • 网络维护人员企业网站优化兴田德润优惠
  • 纯静态网站页面优化网站租用服务器
  • 沈阳专业网站seo推广外销网站建立
  • ckplayer网站根目录系统开发软件
  • 住房和城乡建设部网站31号文tpshop开源商城
  • 昆明专业网站建设模板关键词推广系统
  • 网站建设大赛无锡哪里有网站建设便宜些的
  • 做网站做wordpress中rss插件
  • 怎么做化妆品网站内容规划博客网站开发
  • 金融电子商务网站建设怎么组建企业网站
  • o2o生鲜电商平台有哪些小程序seo排名
  • 做哪方面的网站dede购物网站
  • 冠县做网站推广深圳福田区房价多少钱一平米
  • 怎么看网站是不是php语言做的一个人可以完成网站建设吗
  • 品牌网站推广方案怎么百度上搜到自己的网站
  • 浙江网站推广网站的建设维护及管理制度
  • 网站建设收费明细表wordpress1.0
  • 中国建设银行洛阳分行官网站WordPress账号申请
  • 做公司网站的企业wordpress 添加内容
  • 做网站的需要什么要求wordpress 模板函数
  • 关于电商网站建设的论文黄骅贴吧超市转租
  • 如何建设和优化一个网站毕业设计心理评测网站开发