思路:经典的dijkstra
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define M 105
#define LEN 20
#define MAX 10000000
int map[M][M];
void dij (int n)
{
min_dis[M],flag[M];
i,j,k,min;
< n;i ++){
min_dis[i] = map[0][i];
flag[i] = 0;
1;
< n;i ++)
min = MAX;
for (j = 0;j < n;j ++)
if (!flag[j]&&min_dis[j]
< min)
{
min = min_dis[j];
k = j;
}
flag[k] = 1;
for (j = 0;j < n;j ++)
if (!flag[j] &&
min_dis[k]+map[k][j] < min_dis[j])
min_dis[j] = min_dis[k] + map[k][j];
0;
< n;i ++)
if (min_dis[i] > min)
min = min_dis[i];
("%d\n",min);
}
int main ()
{
n,i,j,len;
str[LEN];
("%d",&n);
< n;i ++)
map[i][i] = MAX;
< n;i ++)
for (j = 0;j < i;j ++)
{
scanf ("%s",str);