hdu 2544
来源:互联网 发布:儿童编程在线教育 编辑:程序博客网 时间:2024/05/17 08:13
#include"stdio.h"
#include"string.h"
#define M 111
#define inf 999999999
int G[M][M],dis[M],use[M];
int n;
void dij(int s)
{
int i,k;
memset(use,0,sizeof(use));
for(i=1;i<=n;i++)
dis[i]=G[i][s];
dis[s]=0;
use[s]=1;
for(k=1;k<n;k++)
{
int min=inf,tep=-1;
for(i=1;i<=n;i++)
{
if(!use[i]&&dis[i]<min)
{
min=dis[i];
tep=i;
}
}
use[tep]++;
for(i=1;i<=n;i++)
{
if(!use[i]&&dis[i]>dis[tep]+G[i][tep])
{
dis[i]=dis[tep]+G[i][tep];
}
}
}
}
int main()
{
int m,i,j;
while(scanf("%d%d",&n,&m),m||n)
{
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
if(i==j)
G[i][j]=G[j][i]=0;
else
G[i][j]=G[j][i]=inf;
}
while(m--)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
G[a][b]=G[b][a]=c;
}
dij(1);
printf("%d\n",dis[n]);
}
return 0;
}
#include"string.h"
#define M 111
#define inf 999999999
int G[M][M],dis[M],use[M];
int n;
void dij(int s)
{
int i,k;
memset(use,0,sizeof(use));
for(i=1;i<=n;i++)
dis[i]=G[i][s];
dis[s]=0;
use[s]=1;
for(k=1;k<n;k++)
{
int min=inf,tep=-1;
for(i=1;i<=n;i++)
{
if(!use[i]&&dis[i]<min)
{
min=dis[i];
tep=i;
}
}
use[tep]++;
for(i=1;i<=n;i++)
{
if(!use[i]&&dis[i]>dis[tep]+G[i][tep])
{
dis[i]=dis[tep]+G[i][tep];
}
}
}
}
int main()
{
int m,i,j;
while(scanf("%d%d",&n,&m),m||n)
{
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
if(i==j)
G[i][j]=G[j][i]=0;
else
G[i][j]=G[j][i]=inf;
}
while(m--)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
G[a][b]=G[b][a]=c;
}
dij(1);
printf("%d\n",dis[n]);
}
return 0;
}
0 0
- 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
- hdu 2544
- pow()函数中求次方的代码,分别用 for 循环和 while 作解析
- Android之Loader理解
- CSS简写指南
- 网络咨询是什么?
- 网络流各种算法模版
- hdu 2544
- Linux调试备忘录1-- Linux kernel启动后,如何在用户命令行查看和修改寄存器值
- JDBC的Statement和PreparedStatement区别
- OpenStack Horizon How to include custom stylesheets css less
- 多线程学习
- 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法
- Android view的绘制流程(二)
- android中的ImageButton
- 蓝桥杯练习(vip) FJ的字符串