51nod 1492
【题目简述】:
给出一个由 012 012 012组成的 n ∗ n n*n n∗n的矩阵, 2 2 2代表玩家, 1 1 1代表墙壁, 0 0 0是通道,边界是出口。一个玩家走过的通道会变成墙壁,求最多能让多少玩家逃出。
【分析】:
很容易联想到网络流的做法,求最大流。问题在于建图,如果直接将每个点和其能到达的点连一条容量为 1 1 1的边,就会导致每条边虽然只能走一次,但每个点可以走多次,这是我们不想看到的。而题目的要求显然是每个点也只能走一次。
考虑将一个点变成两个点,中间以一条容量为1的边相连,这样就符合题意了,即每个点也只能走一次。
这道题数据范围很小 ( n < 101 ) (n<101) (n<101),用 F F FF FF就行了
简单描述一下建边:
① 遇到 1 1 1就直接跳过, 1 1 1不与任何点相连。
② 2 2 2要和 s s s相连
③ 2 2 2和 0 0 0<