Dijkstra模板
#define N 1002 #define MAX 99999 int edges[N][N],d[N],n; void dijkstra(int v) { int i,j; bool s[N]={false}; for(i=1;i<=n;i++) d[i]=edges[v][i]; d[v]=0;s[v]=true; for(i=1;i<n;i++) { int temp=MAX; int u=v; for(j=1;j<=n;j++) if((!s[j])&&(d[j]<temp)) { u=j; temp=d[j]; } s[u]=true; for(j=1;j<=n;j++) if((!s[j])&&(edges[u][j]<MAX)&&(d[u]+edges[u][j])<d[j]) d[j]=d[u]+edges[u][j]; } }