hdu 1874

//1874
#include <stdio.h>
#define N 205
#define INF 10000000

int g[N][N],bz[N],dist[N],s,t,n,m;

void Dijkstra(int s)
{ int i,j,min,k,x;
for (i=1;i<=n;i++)
{ dist[i]=g[s][i]; bz[i]=0; }
bz[s]=1;
for (i=1;i<n;i++)
{
min=INF;
j=s;
for (k=1;k<=n;k++)
if ( dist[k]<min && bz[k]==0 ) { min=dist[k]; j=k; }
bz[j]=1;
for (k=1;k<=n;k++)
if ( min+g[j][k]<dist[k] && bz[k]==0) dist[k]=min+g[j][k];
}
}

int main()
{ int i,j,x,y,w;

while(scanf("%d%d",&n,&m)==2)
{
if(n==0 && m==0) break;
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
if(i==j) g[i][j]=0 ; else g[i][j]=INF ;
for (i=1; i<=m; i++)
{
scanf("%d%d%d",&x,&y,&w) ;
if(g[y+1][x+1]>w) g[x+1][y+1]=g[y+1][x+1]=w;
}
scanf("%d%d",&s,&t);
Dijkstra(s+1);
if(dist[t+1]<INF)
printf("%d\n",dist[t+1]);
else printf("-1\n"); // "-1" 后面一空格

}
}

**************************************************************

#include"stdio.h"
#include"string.h"
#define INF 999999
int g[201][201],mark[201];
int n,m,s,e,f[201];
void dijkstra()
{
int i,j,k,min;
memset(mark,0,sizeof(mark));
for(i=0;i<n;i++)
f[i]=g[s][i];
f[s]=0;
for(i=0;i<n;i++)
{
min=INF;
for(j=0;j<n;j++)
{
if(!mark[j]&&min>f[j])
{
k=j;
min=f[j];
}
}
if(min==INF)break;
mark[k]=1;
for(j=0;j<n;j++)
if(!mark[j]&&f[j]>f[k]+g[k][j])
f[j]=g[k][j]+f[k];
}
if(f[e]!=INF) printf("%d\n",f[e]);
else printf("-1\n");
}

int main()
{
int a,b,l,i,j;
while(scanf("%d%d",&n,&m)!=EOF)
{
for(i=0;i<n;i++)
for(j=0;j<n;j++)
g[i][j]=INF;
for(i=0;i<m;i++)
{
scanf("%d%d%d",&a,&b,&l);
if(g[a][b]>l)
g[a][b]=g[b][a]=l;
}
scanf("%d%d",&s,&e);
dijkstra();
}
return 0;
}

hdu 1874,布布扣,bubuko.com

时间: 2024-11-05 02:17:00

hdu 1874的相关文章

hdu 1874(Dijkstra )

链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874 畅通工程续 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 27692    Accepted Submission(s): 10019 Problem Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路

ACM: HDU 1874 畅通工程续-Dijkstra算法

HDU 1874 畅通工程续 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多.这让行人很困扰. 现在,已知起点和终点,请你计算出要从起点到终点,最短需要行走多少距离. Input 本题目包含多

hdu 1874 通畅工程续

Description某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多.这让行人很困扰. 现在,已知起点和终点,请你计算出要从起点到终点,最短需要行走多少距离. Input本题目包含多组数据,请处理到文件结束.每组数据第一行包含两个正整数N和M(0<N<200,0<M<1000),分别代表现有城镇的数目 和 已修建的道路的数目.城镇分别以0-N-1编号.

HDU 1874 最直接的最短路径问题

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874 Problem Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多.这让行人很困扰.现在,已知起点和终点,请你计算出要从起点到终点,最短需要行走多少距离. Input 本题目包含多组数据,请处理到文件结束. 每组数据第一行包含两个正整数N和M(0

【floyd】HDU 1874 畅通工程续

之后的题解偏重实用/总结性质,尽量理解算法本身而不是题,时间复杂度什么的也可以放放. 很久之前做过这个题,当时使用dijkstra做的,关于几个最短路算法,分类的话可以分为以下几种. 1.单源最短路:已知起点(终点),计算从源点到其他各个顶点的最短路径长度. 典型算法:Dijkstra,Bellman-Ford(可以算负的,比较慢),spfa(负权能用,加了松弛操作,速度比较炸天) 2.全局最短路:从一点到另一点,典型如Floyd,A*启发式算法. 重新用floyd写一遍: #include <

【裸单源最短路:Dijkstra算法两种版本】hdu 1874 畅通工程续

Source : hdu 1874 畅通工程续 http://acm.hdu.edu.cn/showproblem.php?pid=1874 Problem Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多.这让行人很困扰. 现在,已知起点和终点,请你计算出要从起点到终点,最短需要行走多少距离. Input 本题目包含多组数据,请处理到文件结束.

HDU 1874 畅通公程续 (最短路 水)

Problem Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多.这让行人很困扰. 现在,已知起点和终点,请你计算出要从起点到终点,最短需要行走多少距离. Input 本题目包含多组数据,请处理到文件结束. 每组数据第一行包含两个正整数N和M(0<N<200,0<M<1000),分别代表现有城镇的数目和已修建的道路的数目.城镇分别以

hdu 2544 hdu 1874 Dijkstra 模板题

hdu 2544  求点1到点n的最短路 Sample Input2 1 //结点数 边数1 2 3 //u v w3 31 2 52 3 53 1 20 0 Sample Output32 1 # include <iostream> 2 # include <cstdio> 3 # include <cstring> 4 # include <algorithm> 5 # include <cmath> 6 # define LL long

【HDU 1874 2544 2066 2112】 Dijkstra单源最短路径专题 —— 优先队列+邻接表/邻接矩阵

HDU 1874  畅通工程续 解题报告: 由于顶点(城镇)的数目只有200个,所以可以采用邻接矩阵的形式来存储,代码会更简洁些,也不容易出错.但是处于练习的目的,采用邻接表+优先队列的方式实现,优先队列使用STL中的priority_queue.很基础的单源单汇最短路径. HDU 2544  最短路 解题报告: 基本和1874是一样的,只是数据量小了,并且要求当n==0 && m==0时终止,值得注意!这道题同时也保证了一定是可达的,所以输出时可以直接输出. HDU 2066  一个人的