HDOJ2544
来源:互联网 发布:淘宝app 首页动态布局 编辑:程序博客网 时间:2024/05/22 11:37
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2544
最短路径问题:(迪杰斯特拉)算法,也可以用Floyed等算法,我自己用了Floyed,也可以用Dijkstra。
1.Floyed
#include<iostream>using namespace std;int main(){ int N,M,A,B,C,d[101][101],i,j,k; while(cin>>N>>M) { if(N==0&&M==0)break; for(i=1;i<=N;i++) for(j=1;j<=N;j++) d[i][j]=100000000; while(M--) { cin>>A>>B>>C; if(d[A][B]>C)d[A][B]=d[B][A]=C; } for(k=1;k<=N;k++) for(i=1;i<=N;i++) for(j=1;j<=N;j++) d[i][j]=(d[i][j]<(d[i][k]+d[k][j]))?d[i][j]:(d[i][k]+d[k][j]); cout<<d[1][N]<<endl; } return 0;}
2.Dijkstra
#include<iostream>using namespace std;int main(){ bool flag[101]; int map[101][101],i,j,k,dis[101],min; int N,M,A,B,C; while(cin>>N>>M&&N&&M)//注意可以用这种方法当两个输入为0时要跳出的情况 { for(i=1;i<=N;i++) for(j=1;j<=N;j++) map[i][j]=100000000; while(M--) { cin>>A>>B>>C; if(map[A][B]>C)map[A][B]=map[B][A]=C; } for(i=1;i<=N;i++) { dis[i]=map[1][i]; flag[i]=true;//true表示需要寻找一个最短路径,false表示已经是最短路径 } flag[i]=false; for(i=2;i<=N;i++) { min=100000000;//记录最短路径值 for(j=2;j<=N;j++) { if(flag[j]&&dis[j]<min) { k=j; min=dis[j]; } flag[k]=false; for(j=2;j<=N;j++) { if(flag[j]&&dis[k]+min[k][j]<dis[j]) dis[j]=dis[k]+min[k][j]; } } } cout<<dis[N]<<endl; } return 0;}
这两个程序我都编译过并试过,并且都AC的,不信你可以先试试。
- hdoj2544
- HDOJ2544
- hdoj2544
- HDOJ2544
- hdoj2544 最短路
- hdoj2544(Dijkstra)
- <hdoj2544>最短路
- hdoj2544最短路(dijkstra)
- HDOJ2544最短路
- HDOJ2544(简单最短路)
- HDOJ2544 最短路(最短路)
- HDOJ2544 最短路(Dijkstra,floyd,模板)
- codeforces 208C 图的拓扑排序+简单DP
- hdu LCIS(线段树)
- SWUN 1076 - 中州之旅
- redhat 6 配置 yum 源的两种方法
- 【个人开发者】应用开发心得
- HDOJ2544
- 第三天 进程控制
- 装Kies 造成visual studio 2010 崩溃解决方法
- java 入门学习1
- 函数
- 浅谈关于listview和button控件的背景
- cortex-m3 位段(位带)问题
- OS X 10.8 java 无法使用问题解决方法。
- C#中比较引用类型是否相等