题目连接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1178
题目大意:有1个国王和n-1个将军安排在8*8棋盘的每个不同的位置上,要使得他们聚在一个格子中,所需要的最少步数;在移动的过程中国王和将军遇到了话,那么国王就可以由将军背着一起走;
算法:枚举+floyd;首先用floyd(或BFS)求出任意两点之间走马步的最短距离;在枚举所有将军的汇聚点,在枚举国王与将军的汇合点;那个最短路就为:best=Min( all-将军到汇聚点的距离+将军到汇合点的距离+国王道汇合点的距离+汇合点到汇聚点的距离);
代码: