69,373
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
int main(void)
{
int k,m;
int i,j,e;
int u,v,w;
while(scanf("%d %d",&k,&m)!=EOF)
{
int a[110][110];
for(i=1;i<=k;++i)
{
for(j=1;j<=k;++j)
{
a[i][j] = 65535;
}
}
while(m--)
{
scanf("%d %d %d",&u,&v,&w);
a[u][v] = w;
a[v][u] = w;
}
for(e=1;e<=k;++e)
{
for(i=1;i<=k;++i)
{
for(j=1;j<=k;++j)
{
if(a[i][e]<65535 && a[e][j]<65535 && a[i][j]>a[i][e]+a[e][j])
a[i][j] = a[i][e] + a[e][j];
}
}
}
if(a[1][k]!=65535)
printf("%d\n",a[1][k]);
else
printf("NULL\n");
}
return 0;
}
int G[N][N];
for(int k = 0; k < N; ++k){
for(int i = 0; i < N; ++i){
for(int j = 0; j < N; ++j){
if(G[i][j] > G[i][k] + G[k][j]) G[i][j] = G[i][k] + G[k][j];
}
}
}