www.pudn.com > KSP.rar > KSP1.cpp


#include 
#include 
using namespace std; 
#define max_vertex 7   //max_vertex 为实际城市数加一 
void shortest(int cost[max_vertex][max_vertex],int dijkstra[max_vertex],int path[max_vertex],int visited[],int start,int end) 
{ 
	//cost[][]记录权值(不邻接的两点权值为32767),dijikstra[]记录最短路径,path[]标记路径 
 
 
int visited_number,vertex,temp; 
	for(vertex=1;vertex"<>start_city; 
 
i=1; 
while(start_city!=city[i]) 
{ 
 
	i++; 
	if(i>5) 
	{ 
		cout<<"出发地有误!请重新输入"<>start_city; 
	} 
} 
cout<<"出发地正确!"<>end_city; 
while(end_city!=city[i]) 
{ 
 
	i++; 
	if(i>6) 
	{ 
		cout<<"目的地有误!请重新输入"<>end_city; 
	} 
} 
i=1; 
temp_start=start_city.substr(0,1); //取第一个字符串,准备分块查找 
temp_end=end_city.substr(0,1); 
 
//初始化索引表 
   char str='a'; 
	for(int n=0;n<3;n++) 
	{ 
		index[n].key=str; 
		str++; 
 
	} 
 
	//------------- 
	int start_position,end_position;//查找起始和终点城市的编号 
	start_position=search(temp_start,city,index,start_city); //start_position为城市在数组中的下标 
		//cout<>ch; 
string mid_node[max_vertex];  
int mid_city=1; 
string temp_mid; 
int mid_position; 
int mid_store[max_vertex]; 
for(k=1;k>mid_node[mid_city]; 
  
		 temp_mid=mid_node[mid_city].substr(0,1);// 
		mid_position=search(temp_mid,city,index,mid_node[mid_city]); 
		mid_store[mid_city]=mid_position; 
		//cout<<"mid_position  "<>ch; 
	} 
} 
else  
mid_store[0]=end_position; 
int same_number=0; 
cout<<"请输入您需要多少种备选方案"<>need_number; 
cout<=1) 
{ 
    max=32767; 
 
	//根据上次删除的边初始化数组 
	for(vertex=1;vertex>ch; 
cout<1) 
	  { 
        sum_cost=sum_cost+cost_copy[store[temp_node_number]][store[temp_node_number-1]]; 
	//	cout<<"sum_cost  "<>extra; 
		cout<>need_number; 
	cout<=1&&ch!='n') 
	{ 
       max=32767; 
  //     cout<<"need_number --  "<1) 
	  { 
        sum_cost=sum_cost+cost_copy[store[temp_node_number]][store[temp_node_number-1]]; 
	//	cout<<"temp_node_number   "<