#include < stdio.h > #include < memory.h > #define INF 0x7fffffff int Dijkstra( int * Graph, int N, int a, int b) ... { if(a==b) return 0; int* minLength=new int[N]; int i,j; int length,pointer; bool* Set=new bool[N]; memset(Set,false,sizeof(bool)*N); Set[a]=true; for(i=0;i<N;i++) minLength[i]=Graph[N*a+i]; for(i=0;i<N-1;i++) ...{ length=INF; pointer=INF; for(j=0;j<N;j++) ...{ if(length>minLength[j] && !Set[j]) ...{ length=minLength[j]; pointer=j; } } if(pointer==b) ...{ delete [] Set; delete [] minLength; return length; } Set[pointer]=true; for(j=0;j<N;j++) ...{ if(minLength[j]>Graph[pointer*N+j]+minLength[j]) minLength[j]=Graph[pointer*N+j]+minLength[j]; } } delete [] Set; delete [] minLength; return -1;}