题意:给出一些城市的坐标,每个信号基站可以覆盖两个相邻的点,问最少要建多少个基站。
思路:我们要尽可能多的建立能覆盖两个城市的基站(二分匹配最大匹配),剩下的城市每个城市建立一个基站。先求出最大匹 配数k。n-k*2+k=n-k;
#include<stdio.h>
#include<string.h>
const int N=500;
int head[N],num,match[N],link[N],map[50][50];
int dir[4][2]={0,1,0,-1,1,0,-1,0};
struct edge
{
int st,ed,next;
}e[N*N];
void addedge(int x,int y)
{
e[num].st=x;e[num].ed=y;e[num].next=head[......
阅读全文