hdu1874-畅通工程续(最短路)
来源:互联网 发布:淘宝店铺名字测吉凶 编辑:程序博客网 时间:2024/06/05 14:56
/*模版题,,不过还是wa好多次,郁闷,,原来是题目两个点之间可以修很多条路,选最短的,然后DIJKSTRA就OK*/#include <stdio.h>#include <string.h>#define MAXN 200#define inf 9999999typedef int elem_t;/*套了zju的o(∩_∩)o */void dijkstra(int n,elem_t mat[][MAXN],int s,elem_t* min,int* pre){int v[MAXN],i,j,k;for (i=0;i<n;i++)min[i]=inf,v[i]=0,pre[i]=-1;for (min[s]=0,j=0;j<n;j++){for (k=-1,i=0;i<n;i++)if (!v[i]&&(k==-1||min[i]<min[k]))k=i;for (v[k]=1,i=0;i<n;i++)if (!v[i]&&min[k]+mat[k][i]<min[i])min[i]=min[k]+mat[pre[i]=k][i];}}int main(){ int n,m,a,b,x,s,t,i,j; elem_t mat[MAXN][MAXN]; elem_t min[MAXN],pre[MAXN]; while(scanf("%d%d",&n,&m)!=EOF) { for(i=0;i<n;++i) for(j=0;j<n;++j) mat[i][j]=inf; for(i=0;i<m;++i) { scanf("%d%d%d",&a,&b,&x); if(mat[a][b]>x) { mat[a][b]=x; mat[b][a]=x; } } scanf("%d%d",&s,&t); dijkstra(n,mat,s,min,pre); if(min[t]==inf)printf("%d\n",-1); else printf("%d\n",min[t]); } return 0;}
闲的没事做,,,自己也写了个dijkstra
#include <stdio.h>#define NUM 200#define inf 1000000void dijkstra(int n,int s,int mat[NUM][NUM],int *dist,int *prev){ int v[NUM],i,j,u,min; for(i=0;i<n;++i) { dist[i]=mat[s][i]; v[i]=0; if(i!=s && dist[i]<inf)prev[i]=s; else prev[i]=-1; } v[s]=1;dist[s]=0; for(i=0;i<n-1;++i) { min=inf; u=s; for(j=0;j<n;++j) { if(!v[j] && dist[j]<min) { min=dist[j]; u=j; } } v[u]=1; for(j=0;j<n;++j) { if(!v[j] && mat[u][j]<inf && dist[u]+mat[u][j]<dist[j]) { dist[j]=dist[u]+mat[u][j]; prev[j]=u; } } }}int main(){ int mat[NUM][NUM],dist[NUM],prev[NUM]; int n,m,s,t,a,b,c,i,j; while(scanf("%d%d",&n,&m)!=EOF) { for(i=0;i<n;++i) for(j=0;j<n;++j) mat[i][j]=inf; for(i=0;i<m;++i) { scanf("%d%d%d",&a,&b,&c); if(mat[a][b]>c) { mat[a][b]=mat[b][a]=c; } } scanf("%d%d",&s,&t); dijkstra(n,s,mat,dist,prev); if(dist[t]==inf)printf("-1\n"); else printf("%d\n",dist[t]); } return 0;}
- hdu1874-畅通工程续(最短路)
- hdu1874 畅通工程续 (最短路)
- HDU1874--畅通工程续--最短路
- 畅通工程续(hdu1874,floyd最短路)
- hdu1874 畅通工程续 最短路
- hdu1874 畅通工程续 最短路
- hdu1874 畅通工程续(单元最短路)
- HDU1874-畅通工程续-最短路(dijkstra)
- hdu1874 畅通工程续(最短路)
- HDU1874:畅通工程续(最短路)
- HDU1874-畅通工程续-最短路
- HDU1874 畅通工程续 解题报告--最短路dijkstra算法
- hdu1874畅通工程续 --hdu2544最短路(Floyd)
- HDU1874畅通工程续 (Dijkstra算法求最短路)
- ACM-最短路之畅通工程续——hdu1874
- hdu1874畅通工程续【最短路dijkstra&&SPFA&&floyd】
- HDU1874-畅通工程续(Dijkstra最短路)
- hdu1874 最短路径 畅通工程续
- 安全传输协议SSL和TLS及WTLS的原理
- VC++写程序的一点总结
- fedora10下minicom设置,出现"Device /dev/ttyS0 lock failed": 不允许的操作.的解决
- 英语美文-What will matter?
- ubuntu 11.10安装chrome显示内部错误
- hdu1874-畅通工程续(最短路)
- C#线程系列讲座(2):Thread类的应用
- 用本地repo制作Pandaboard的MeeGo镜像
- 第一个应用程序Hello World
- 一个简单的阻塞队列实现
- 轻量级web server Tornado代码分析
- C#线程系列讲座(3):线程池和文件下载服务器
- Lua脚本语法说明(5.1 参考手册)
- POJ1118 Lining Up 计算几何