大意:一个矩形中,有N个城市’*’,现在这n个城市都要覆盖无线,若放置一个基站,那么它至多可以覆盖相邻的两个城市。问至少放置多少个基站才能使得所有的城市都覆盖无线?
思路:这题是无向二分图,所以要进行拆点即最后最大匹配数/2;参考博客
公式:无向二分图的最小路径覆盖 = 顶点数 – 最大二分匹配数/2
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#define maxn 500
using namespace std;
int n,m;
char str[45];
int maps[45][45],match[maxn];
bool vis[maxn];
vector<int> e[maxn];
bool dfs(int u){
for(int i=0;i<e[u].size();i++){
int v