hdu2680最短路Choose the best route
来源:互联网 发布:进销存软件免费下载 编辑:程序博客网 时间:2024/05/16 11:09
hdu2680Choose the best route
先将多个起点用一个超级源点连接 ,权值为0
然后用dijkstra就可以得到结果了
#include<iostream>using namespace std;#define INF 100000000int mp[1010][1010],dist[1010];bool visit[1010];int main(){int N,M,S,T,x,y,c,i,j;while(scanf("%d%d%d",&N,&M,&T)!=EOF){for(i=0;i<=N;i++)for(j=0;j<=N;j++)mp[i][j]=INF;for(i=1;i<=M;i++){scanf("%d%d%d",&x,&y,&c);if(mp[x][y]>c) //有多种情况 mp[x][y]=c;}int w;scanf("%d",&w); //w个起点sfor(i=1;i<=w;i++){scanf("%d",&S);mp[0][S]=0;}memset(visit,0,sizeof(visit)); visit[0]=1;for(i=0;i<=N;i++)dist[i]=mp[0][i];dist[0]=0;//for(i=0;i<=N;i++)//printf("dist[%d]=%d ",i,dist[i]);//printf("\n");int min,k=0;for(i=0;i<=N;i++){//printf("!N=%d\n",N);min=INF;for(j=0;j<=N;j++)if(!visit[j]&&min>dist[j]){min=dist[j];k=j;}//printf("k=%d ",k);visit[k]=1;//for(j=0;j<=N;j++) printf("%d ",visit[j]); printf("\n");for(j=0;j<=N;j++)if(!visit[j]&&dist[j]>dist[k]+mp[k][j])dist[j]=dist[k]+mp[k][j];//for(j=0;j<=N;j++)//printf("dist[%d]=%d ",j,dist[j]);//printf("\n");}//for(i=0;i<=N;i++)//printf("dist[%d]=%d ",i,dist[i]);//printf("\n");if(dist[T]==INF)printf("-1\n");else printf("%d\n",dist[T]);}return 0;}
本来写的是floyd,这题超时
代码如下
//floyd超时 #include<iostream>using namespace std;#define INF 100000000int N,M,S,T;int mp[1010][1010];int main(){int i,j,k,x,y,c,w,min;while(scanf("%d%d%d",&N,&M,&T)!=EOF){for(i=1;i<=N;i++)for(j=1;j<=N;j++)mp[i][j]=INF;for(i=1;i<=M;i++){scanf("%d%d%d",&x,&y,&c);if(mp[x][y]>c)mp[x][y]=c;}//printf("%d %d %d \n",mp[1][4],mp[2][4],mp[3][4]);for(i=1;i<=N;i++)for(j=1;j<=N;j++)for(k=1;k<=N;k++){if(mp[i][j]>mp[i][k]+mp[k][j])mp[i][j]=mp[i][k]+mp[k][j];}scanf("%d",&w);min=INF;for(i=1;i<=w;i++){scanf("%d",&S); if(min>mp[S][T])min=mp[S][T];}if(min>=INF)printf("-1\n");elseprintf("%d\n",min);}return 0;}
- hdu2680最短路Choose the best route
- HDU2680 Choose the best route 最短路
- hdu2680 Choose the best route 最短路(Dijkstra算法)
- HDU2680 Choose the best route(最短路)
- HDU2680 Choose the best route
- hdu2680 Choose the best route
- HDU2680-Choose the best route
- HDU2680 Choose the best route
- hdu2680 choose the best route
- hdu2680 Choose the best route 最短路,超级起点(多源Dijkstra算法,)
- HDU2680-Choose the best route(经典最短路问题dijkstra算法)
- HDU2680 Choose the best route (最短路)(Dijkstra算法)
- hdu2680 Choose the best route(spfa求最短路模板题)
- hdu2680 Choose the best route (dijkstra)
- HDu2680(Choose the best route)
- Choose the best route hdu2680 Dijkstra
- hdu2680 Choose the best route (Dijkstra)
- HDU2680:Choose the best route(Dijkstra)
- spring2.5+spring MVC + ibatis2.3.4 + FreeMarker2.3
- Android init.rc解析
- Windows Installer
- So do I 与 So I do
- 工作一年,报个平安
- hdu2680最短路Choose the best route
- 关于yii中jquery的用法
- 汉诺塔问题
- 关于Exponential family
- apk安装和卸载
- VB.Net中HOOK的使用方法
- Linux下的文件编程
- java中枚举
- linxu下使用xvfb虚拟设备进行截图