Problem Description
最短路径问题是经典图论问题之一。从工程意义上讲,最短路径问题是对大量工程问题的直观抽象。
最典型的例子是在地图上寻找最短驾车路径。
寻找从A到D的最短路径。
测试输入
5,7
A,B,C,E,D
<0,3,30>,<0,1,10>,<0,2,20>,<1,3,10>,<1,2,5>,<2,4,30>,<3,4,20>
测试输出
A-B-E-D
AcCode
//
// main.cpp
// 求两点之间的最短路径
//
// Created by jetviper on 2017/3/26.
// Copyright © 2017年 jetviper. All rights reserved.
//
#include
#include
#include
#define INFINITY 99999
int n,b,k,t;
struct{
char name[10];
int bnum;
int linkto[5000];
int value[5000];
}node[600];
char temp[5000],road[5000][5000];
int D[5000];
void scanfb(char *temp,int f,int *get){
char s1[20],s2[20],s3[20];
int p,s,c;
int len = strlen(temp);
if(temp[f]=='<'){
p=0;
for(int j=f+1;jD[now]+node[now].value[i]){
char tmpstr[500];
strcpy(tmpstr,road[now]);
strcat(tmpstr,node[now].name);
strcat(tmpstr,"-");
strcpy(road[node[now].linkto[i]],tmpstr);
D[node[now].linkto[i]] = D[now] + node[now].value[i];
list[count++] = node[now].linkto[i];
}
}
for(int i=0;i