Dijkstra算法(邻接阵)模板
int maxData=10000000; int graph[arraysize][arraysize]; int d[arraysize]; int pre[arraysize]; //存储节点前驱 bool final[arraysize]; int t,n; void Dij(int src) { int i,j; int minData; int v; memset(final,0,sizeof(final)); for(i=1;i<=n;++i) { d[i] = graph[src][i]; if(d[i]<maxData) pre[i]=src; else pre[i]=0; } final[src]=true; d[src]=0; for(i=1;i<n;++i) { minData = maxData; for(j=1;j<=n;++j) { if(!final[j] && d[j]<minData) { v = j; minData=d[j]; } } final[v]=true; for(j=1;j<=n;++j) { if(!final[j] && graph[v][j]<maxData && d[j]>d[v]+graph[v][j]) { d[j]=d[v]+graph[v][j]; pre[j]=v; //前驱节点更新 } } } cout<<d[1