1009-I专题四
2016-07-07 10:04
459 查看
1.题意:寻找最短的从商店到赛场的路线,每组数据第一行是两个整数N、M(N<=100,M<=10000),N表示成都的大街上有几个路口,标号为1的路口是商店所在地,标号为N的路口是赛场所在地,M则表示在成都有几条路。接下来M行,每行包括3个整数A,B,C(1<=A,B<=N,1<=C<=1000),表示在路口A与路口B之间有一条路,我们的工作人员需要C分钟的时间走过这条路。
2.思路:这道题使用Dijkstra算法,就像画一个无向图,求两定点之间的权值和的最小值,经过搜索,把所有的点都表示出来,最后输出最小。
3.感想:应用了离散的思想和数据结构的算法
2.思路:这道题使用Dijkstra算法,就像画一个无向图,求两定点之间的权值和的最小值,经过搜索,把所有的点都表示出来,最后输出最小。
3.感想:应用了离散的思想和数据结构的算法
#include<iostream> #include<stdio.h> #include<string.h> #define MAX 0x3f3f3f3f using namespace std; const int N=110; int n,m; int imap ; void Fioyd(){ int i,j,k; for( k=1;k<=n;++k ) for( i=1;i<=n;++i ) for( j=1;j<=n;++j ) imap[i][j]=min( imap[i][j],imap[i][k]+imap[k][j] ); } int main() { while(cin>>n>>m&&n+m){ for(int i=1;i<=n;++i ) for(int j=1;j<=i;++j ) { if( i==j ) imap[i][j]=0; else imap[i][j]=imap[j][i]=MAX; } int ii,jj,temp1; for(int i=0;i<m;i++) {scanf("%d %d",&ii,&jj); scanf("%d",&temp1); imap[ii][jj]=temp1; imap[jj][ii]=temp1; } Fioyd(); printf("%d\n",imap[1] ); } return 0; }
相关文章推荐
- centos安装redis2.8.x和phpredis2.2.x扩展
- Android adb一些命令记录
- Android轻量存储值SharedPreference存世实例
- 基于opencv的肤色检测
- 利用ASP.NET MVC和Bootstrap快速搭建个人博客之后台dataTable数据列表
- 最近碰到一个oracle“分布式事务处理已经开始”的问题
- 1.6配置IP地址
- Java 静态语句块、语句块、构造函数
- Webstorm--修改 打开浏览器的 localhost地址为 任意地址
- Web上的用户登录功能安全
- CSS自定义滚动条
- Log类使用
- (转)C# wnform 请求http ( get , post 两种方式 )
- MyBatis联合查询和修改例子
- SQL Server 0101 首日期的处理
- Accessibility(辅助功能、易用性服务)
- jQuery插件Flexslider实现图片轮播、图文结合滑动切换效果
- C++汇总
- [置顶] Android开发利用shareSDK等第三方分享,弹出的是英文名称。例如Genymotion模拟器
- BZOJ_1624_ [Usaco2008_Open]_Clear_And_Present_Danger_寻宝之路_(最短路_Floyd)