/**
使用最小堆实现Dijkstra算法,图的表示是邻接表表示
这边只是求出每一个节点到源节点的最短路径,并没有记录父节点,用来生成最短路径
**/
#include <iostream>
using namespace std;
#define MAX_NODES 1000 //定义最多的节点数
#define MAX_COST 10000 //定义边的最大的权值
//节点类
class Edge;
class Node
{
public:
int index ; //节点在堆中的下标,因为堆是在不断调整的。如果节点的最小的权值改变后需要调整堆的时候根据index获得节点在堆中的下标
Edge * first; //这个节点连接的边中的第一条
Node (int index ):index(index),first(NULL){}
Node(){}
};
//边类
class Edge
{
public:
double cost ; //每条边的权值
int head ,tail; //边的头尾节点
Edge * next; //同一个节点的下一条边
Edge (int head,int tail ,double cost):head(head),tail(tail),cost(cost),next(NULL){}
};
double mincost [MAX_NODES];