dijkstra算法

map[i][j]存储i点到j点的权值;

visit[i]用于记录访问点

w[i]表示0点(即其实点)到i点的最小权值


int dijkstra(){
	int w[MAX];
	for(int i=0;i<=1000;i++)
		w[i]=INF;
	int next;
	w[0]=0;
	for(int i=0;i!=-1;){
		visit[i]=1;
		next=-1;
		if(i&&target[i])return w[i];
		for(int j=1;j<=NUM;j++){
			if(!visit[j]&&map[i][j]!=INF){
				w[j]=min(w[j],w[i]+map[i][j]);
			}
			if(!visit[j]&&(next==-1||w[j]

你可能感兴趣的:(经典算法)