博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cogs——73. 找最佳通路
阅读量:6164 次
发布时间:2019-06-21

本文共 1378 字,大约阅读时间需要 4 分钟。

73. 找最佳通路

★☆   输入文件:city.in   输出文件:city.out   简单对比

时间限制:1 s   内存限制:128 MB

问题描述

有 n 个 城市,它们之间的交通情况已知。现在要求根据一个出发点Cs和一个到达点Cd,请编程序,由计算机找到从城市Cs 到 Cd 的一条路径,要求经过城市最少。

【输入格式】

输入文件: city.in

输入由若干行组成,第一行有四个整数,n(1≤n≤50)、m(1≤m≤n*n)和s(1≤s≤n)、e(1≤e≤n);n表示城市数,m表示道路数,s和e表示出发点和到达点。

第 2至m+1行是m 条边的 信息,每行两个整数,为边的起点和终点。

【输出格式】

输出文件: city.out

一个整数,经过城市的个数(包括起点和终点)

【输入样例】

输入文件名:city.in

6 6 1 5 

1 3 
2 6 
3 6 
3 2 
6 4 
4 5

输出文件名:city.out

5

 

 

spfa求最短路裸题!

最少经过的城市个数为经过的路的条数-1,。但我们这个地方说的是算上起始结束城市。这样我们得到的经过的城市数为路的条数+1;

我们只需要把边权附成1,然后再跑最短路就好了、

代码:

#include
#include
#include
#include
#include
#include
#define N 1000#define maxn 9999999using namespace std;int n,m,x,y,s,e,tot,ans,dis[N],head[N];int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){ if(ch=='-')f=-1; ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0'; ch=getchar();} return x*f;}struct Edge{ int from,to,next,dis;}edge[N];void add(int x,int y,int z){ tot++; edge[tot].to=y; edge[tot].dis=z; edge[tot].next=head[x]; head[x]=tot;}int spfa(int s){ queue
q; bool vis[N]; for(int i=1;i<=n;i++) dis[i]=maxn,vis[i]=false; q.push(s);vis[s]=true;dis[s]=0; while(!q.empty()) { int x=q.front();q.pop(); for(int i=head[x];i;i=edge[i].next) { int t=edge[i].to; if(dis[x]+edge[i].dis

 

转载于:https://www.cnblogs.com/z360/p/7416291.html

你可能感兴趣的文章
Webpack 2 中一些常见的优化措施
查看>>
移动端响应式
查看>>
js中var、let、const的区别
查看>>
简洁优雅地实现夜间模式
查看>>
react学习总结
查看>>
在soapui上踩过的坑
查看>>
MySQL的字符集和字符编码笔记
查看>>
ntpd同步时间
查看>>
Maven编译时跳过Test
查看>>
Spring Boot 整合Spring Security 和Swagger2 遇到的问题小结
查看>>
Apache通过mod_php5支持PHP
查看>>
java学习:jdbc连接示例
查看>>
Silverlight 如何手动打包xap
查看>>
HTTP缓存应用
查看>>
KubeEdge向左,K3S向右
查看>>
DTCC2013:基于网络监听数据库安全审计
查看>>
CCNA考试要点大搜集(二)
查看>>
ajax查询数据库时数据无法更新的问题
查看>>
Kickstart 无人职守安装,终于搞定了。
查看>>
linux开源万岁
查看>>