PTA 07-图6 旅游规划 (25 分)

这道题我用dijstra算法,对这个算法稍微做改进就可以。可以说非常经典了!

 

算法的思想我不必详述,毕竟大家在学习《数据结构》的时候都已经非常了解了。

读我的代码要注意的细节:

1.我储存图的时候节点编号从1开始。

2.邻接矩阵储存的图。

3.初始化时把每个节点初始化成最远距离。

 

#include 
#include 
#include
#include  
#include  
#include 
#include 
#include 
#include  
#include 
using namespace std;
const int maxn=5e2+10;

int mp_long[maxn][maxn];
int mp_cost[maxn][maxn];
int e,v;
int dist_long[maxn];
int dist_cost[maxn];


void init(){
	//set to be maximum far initialization
	memset(mp_long,0x3f,sizeof(mp_long));
//	memset(mp_cost,0x3f,sizeof(mp_cost));
}
template
void showArray(T array){
	for(int i=1;i<=v;i++)
		cout<
void showMetrix(T metrix){
	for(int i=1;i<=v;i++){
		for(int j=1;j<=v;j++)
			cout<>N>>M>>S>>D) {
		init();
		int x,y,howLong,cost;
		e=M,v=N;
		for(int i=1;i<=M;i++){
			cin>>x>>y>>howLong>>cost;
			mp_long[x+1][y+1]=mp_long[y+1][x+1]=howLong;
			mp_cost[x+1][y+1]=mp_cost[y+1][x+1]=cost;
		}
		
//		showMetrix(mp_cost);
		
		dijstra(S+1);
//		show(dist_long);
		
		cout<

 

你可能感兴趣的:(图论基础)