POJ 1125
典型的求解有向图中两个的最短路径问题:
如果求图中任意两点的最短路径,则使用flyod算法。
如果求图中给定两点的距离,则用dijkstra算法.
Floyd算法:
int map[N][N];
void Floyd()
{
for(int t=1; t<=n; t++)
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
map[i][j]=min(map[i][j],map[i][t]+map[t][j]);
}
dijkstra算法:
算法步骤:
a.初始时,S只包含源点,即S={v},v的距离为0。U包含除v外的其他顶点,即:U={其余顶点},若v与U中顶点u有边,则<u,v>正常有权值ÿ