problem 有一个的方格,每个格子上有3种情况: 1.障碍,不能通过2.国家,有3种国家(标号为1,2,3)可以直接通过。3.平地,可以花费1的代价建造一条道路。然后就可以直接通过了。 问最少需要在多少个平地上建立道路,使得3种国家之间两两连通。无法满足条件则输出-1 solution 三种国家肯定是在某个点相遇,那就枚举一下这个点,分别计算一下从每种国家到这个点的最小距离。三种国家的距离和就是在该点相遇的代价。 所以就对于每种国家跑一遍spfa,预处理出他到格子上每个点之间的最小距离。 需要注意的是,如果相遇点是平地,那么这个点就被3个国家都计算了一遍答案。所以将代价-2即可。 code...