uva12549 Sentry Robots(二分图)

博客探讨了如何使用二分图匹配算法解决在Y行X列的网格中,放置最少数量的机器人来覆盖所有重要位置的问题。机器人可以面向四个方向,并且其激光射线直到遇到障碍物为止。文章提供了题意解析和解决方案思路。
摘要由CSDN通过智能技术生成

HDU 5093 是一样的

题意:

在一个Y行X列的网格里有空地(.),重要位置(*)和障碍物(#),用最少的机器人看守所有重要位置,每个机器人要放在一个格子里,面朝上下左右4个方向之一。机器人会发出激光,一直射到障碍物为止,沿途都是看守范围。

思路:给行块和列块标号,在重要位置处连边,然后匹配

#include <stdio.h>
#include <string.h>

int str[105][105];
int match[2550],x[105][105],y[105][105];
bool mp[2500][2500],used[2550];
int cntx,cnty;

bool dfs(int u)
{
    for(int i = 0; i < cnty; i++) {
        if(mp[u][i] && !used[i]) {
            used[i] = 1;
            if(match[i] == -1 || dfs(match[i])) {
                match[i] = u;
                return true;
            }
        }
    }
    return false;
}
int max_match()
{
    int ans = 0;
    memset(match,-1,sizeof(match));
    for(int i = 0; i < cntx; i++) {
        memset(u
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值