hdu 2544(最短路)
来源:互联网 发布:ccs软件功能 编辑:程序博客网 时间:2024/05/17 22:36
自己写的,留着以后参考
dijkstra 算法
#include <iostream>#define max 120#define inf 999999using namespace std;int sev[max][max],dis[max];int num,side;bool p[max];void dijkstra(){ int k,temp; memset(p,0,sizeof(p)); for(int i=0;i<num;i++) dis[i]=sev[0][i]; //这里要特别注意 不是 dis[i]=inf; p[0]=1; dis[0]=0; for(int i=0;i<num;i++) { temp=inf; for(int j=0;j<num;j++) if(!p[j]&&temp>dis[j]) temp=dis[k=j]; if(temp==inf)continue; p[k]=1; for(int j=0;j<num;j++) if(!p[j]&&dis[j]>dis[k]+sev[k][j]) dis[j]=dis[k]+sev[k][j]; } } int main(){ int a,b,conse; //freopen("in.txt","r",stdin); while(cin>>num>>side,num+side) { for(int i=0;i<num;i++) for(int j=0;j<num;j++) sev[i][j]=inf; while(side--) { cin>>a>>b>>conse; sev[a-1][b-1]=sev[b-1][a-1]=conse; } //for(int i=0;i<num;i++)// for(int j=0;j<num;j++)// cout<<sev[i][j]<<" "; dijkstra(); //for(int i=0;i<num;i++)// cout<<"dsfe "<<dis[i]<<endl; cout<<dis[num-1]<<endl; } return 0;}
除了这个还可以用弗洛伊德算法
#include <iostream>#define max 120#define inf 999999int sev[max][max];int dis[max];using namespace std;int main(int argc, char *argv[]){ int num,side; int a,b,conse; while(cin>>num>>side,side+num) { for(int i=0;i<=num;i++) for(int j=0;j<=num;j++) sev[i][j]=inf; while(side--) { scanf("%d%d%d",&a,&b,&conse); sev[a][b]=sev[b][a]=conse; } for(int k=1;k<=num;k++) //表示num个点的循环遍历 for(int i=1;i<=num;i++) for(int j=1;j<=num;j++) if(sev[i][j]>sev[i][k]+sev[k][j]) sev[i][j]=sev[i][k]+sev[k][j]; cout<<sev[1][num]<<endl; } return 0;}
- 最短路 2544hdu
- HDU 2544 最短路
- HDU-2544 最短路
- Hdu-2544 最短路
- HDU 2544 最短路
- hdu 2544 最短路
- HDU 2544 ( 最短路 )
- hdu 2544 最短路
- HDU 2544 最短路
- hdu 2544 最短路
- hdu 2544 最短路
- HDU 2544 最短路
- hdu 2544 最短路
- HDU 2544 最短路
- hdu 2544 最短路
- HDU 2544 最短路
- hdu 2544 最短路
- hdu 2544 最短路
- spring注解
- java中堆和栈的理解
- c/c++正则表达式
- OpenGL笔记:四. 视图变换
- 从错误中得知--关于字符串我以前没注意的东西
- hdu 2544(最短路)
- MyBatis学习(四)- 动态SQL
- 正则表达式之优先级
- vim的智能补全
- ubuntu 安装星际译王英汉词典
- isLowerCase、isUpperCase
- 简易计算器
- 算法:并查集学习笔记
- 清明节