输入格式:
第一行包含两个整数n, m,表示棋子的个数(它也是棋盘的边长)和障碍的个数。以下n行,每行两个整数(x, y),表示第i个棋子的坐标(1<=x, y<=n),以下m行,每行给出一个障碍物的坐标。假设这n+m个坐标两两不重合。
输出格式:
一个整数,表示最小移动步数。如果无解,输出-1
思路:费用流来解,首先把没有障碍的点做点标记编个号什么的,要不然后面到写数组写到你吐血。每次枚举一行或一列或一条对角线,判断这一行、列、对角线有没有障碍,然后建图:
(1)源点→棋子初始位置,流量1,费用0;