hdu-2066-最短路程问题
来源:互联网 发布:nba2konline辅助软件 编辑:程序博客网 时间:2024/05/28 23:09
起点成市有多个,抵达城市也有多个,问当中最最最短的是哪一条。每一种情况都得考虑,有n*m种情况。这是加强版的最短路径问题。题目不难,需要耐心。
以下是AC代码,没怎么优化。请耐心看。
#include<iostream>#include<cstring>#include<cstdio>using namespace std;#define MAX 1005#define inf 99999int len,e;int map[MAX][MAX],ee[MAX];int dis[MAX],flag[MAX];int dj(int str)//以下是模板,不用多解释{ int i,j,v,minx; //memset(flag,0,sizeof(flag)); for(i=1; i<=len; i++) { flag[i]=0; dis[i]=map[str][i]; } dis[str]=0; flag[str]=1; for(i=1; i<=len; i++) { minx=inf; for(j=1; j<=len; j++) { if(!flag[j]&&dis[j]<minx) { minx=dis[j]; v=j; } } flag[v]=1; if(minx==inf)break; for(j=1; j<=len; j++) { if(!flag[j]&&dis[j]>dis[v]+map[v][j]) dis[j]=dis[v]+map[v][j]; } } minx=inf; for(i=1; i<=e; i++)//起始城市到每个想去城市的最短距离,找出最小的 { if(minx>dis[ee[i]]) minx=dis[ee[i]]; } return minx;}int main(){ int t,s,i,j,a,b,time,ans,minx; int ss[MAX]; while(scanf("%d%d%d",&t,&s,&e)!=EOF) { for(i=1; i<=MAX; i++) for(j=1; j<=MAX; j++) map[i][j]=inf; len=0;//记录城市的长度(最大是几号城市) while(t--) { scanf("%d%d%d",&a,&b,&time); if(map[a][b]>time) map[a][b]=map[b][a]=time; if(len<a)len=a; if(len<b)len=b; } for(i=1; i<=s; i++) scanf("%d",&ss[i]); for(i=1; i<=e; i++) scanf("%d",&ee[i]); ans=inf; for(i=1; i<=s; i++)//列举每一个起始城市 { minx=dj(ss[i]) if(ans>minx) ans=minx; } cout<<ans<<endl; } return 0;}
- hdu-2066-最短路程问题
- 最短路程
- 最短路径问题 HDU
- 【最短路径-Dis】hdu 3790 最短路径问题
- poj 1456 Supermarket (最短路程)
- 度度熊回家-百度-最短路程
- HDU 2066 最短路径
- hdu 3790 最短路径问题
- hdu 3790 最短路径问题
- HDU-3790-最短路径问题
- HDU 3790 最短路径问题
- hdu 3790 最短路径问题
- Hdu 3790 最短路径问题
- HDU 3790 最短路径问题
- HDU 3790 最短路径问题
- hdu 3790 最短路径问题
- hdu 3790 最短路径问题
- 最短路径问题 hdu 3790
- ASP.NET 2.0中执行数据库操作命令之二
- linux常用命令
- 2013年8月31日GitHub网站维护
- java nio server和lua client
- 截取android手机log
- hdu-2066-最短路程问题
- 浅谈动态扫描数码管“消抖”、“消影”问题
- ASP.NET2.0服务器控件之捕获回传事件
- Mysql存中文问题解决
- java基本数据类型自动转换
- SP.NET 2.0服务器控件之处理回传数据
- Exercises 3.3 E7
- Exercises2.2 E2(b)
- VB.NET 程序发布