题目:
题意:
每个单元格最初都是空的。李华可以选择一些单元格(除了输入的开始位置和结束位置之外)并在它们每个人身上设置一个障碍物。求出李华没有路径可走的时候,需要放置的障碍物的最小数量。
题解:
这个题目就是求解在输入的开始位置和结束位置之间,上下左右(不能越界)能走动的次数最小值。
代码:
#include<bits/stdc++.h>
using namespace std;
int t,n,m;
int fx[4][2]= {{0,1},{0,-1},{1,0},{-1,0}};
int sum(int x,int y) {
int ans=0;
for(int i=0; i<4; i++) {
int xx=x+fx[i][0];
int yy=y+fx[i][1];
if(xx<1||yy<1||xx>n||yy>m)
continue;
ans++;
}
return ans;
}
int main() {
cin>>t;
while(t--) {
int x0,y0,x1,y1;
cin>>n>>m;
cin>>x0>>y0>>x1>>y1;
cout<<min(sum(x0,y0),sum(x1,y1))<<endl;
}
return 0;
}