POJ2446 二分匹配
2024-09-06 13:03:26
题意:
给你一个n*m的格子,问你能不能用1*2的格子把他铺满,有的位置是不能被铺的。
思路:
水题,直接把个相邻的并且都是可以铺的点连一条边然后匹配一遍就行了,提醒一个地方,就是输入不能铺的坐标的时候是 先输入列再输入行。
#include<stdio.h>
#include<string.h>
#define N_node 1500
#define N_edge 6000
typedef struct
{
int to ,next;
}STAR;
STAR E[N_edge];
int list[N_node] ,tot;
int mk_dfs[N_node] ,mk_gx[N_node];
int map[40][40];
void add(int a ,int b)
{
E[++tot].to = b;
E[tot].next = list[a];
list[a] = tot;
}
int DFS_XYL(int x)
{
for(int k = list[x] ;k ;k = E[k].next)
{
int to = E[k].to;
if(mk_dfs[to]) continue;
mk_dfs[to] = 1;
if(mk_gx[to] == -1 || DFS_XYL(mk_gx[to]))
{
mk_gx[to] = x;
return 1;
}
}
return 0;
}
int main ()
{
int n ,m ,k ,i ,j;
int a ,b;
while(~scanf("%d %d %d" ,&n ,&m ,&k))
{
memset(map ,0 ,sizeof(map));
for(i = 1 ;i <= k ;i ++)
{
scanf("%d %d" ,&b ,&a);
map[a][b] = 1;
}
memset(list ,0 ,sizeof(list));
tot = 1;
for(i = 1 ;i <= n ;i ++)
for(j = 1 ;j <= m ;j ++)
{
if(map[i][j]) continue;
int now = (i - 1) * m + j;
if(i < n && !map[i+1][j])
add(now ,now + m);
if(j < m && !map[i][j+1])
add(now ,now + 1);
if(i > 1 && !map[i-1][j])
add(now ,now - m);
if(j > 1 && !map[i][j-1])
add(now ,now - 1);
}
int sum = 0;
memset(mk_gx ,255 ,sizeof(mk_gx));
for(i = 1 ;i <= n * m ;i ++)
{
memset(mk_dfs ,0 ,sizeof(mk_dfs));
sum += DFS_XYL(i);
}
if(sum == n * m - k)
puts("YES");
else
puts("NO");
}
return 0;
}
最新文章
- Twisted
- css后代选择器(div.class中间不带空格)
- (整理)SQL server 2012 中文乱码与5030错误
- Spring+Mybatis+jQuery.Pagination.js异步分页及JsonConfig的使用
- ssh 无密码登录远程服务器
- java 存储oracle的clob字段
- SSH Session Recorder
- SQL Server 日期相关
- 基于ASP.MVC票据FormsAuthenticationTicket身份认证
- 微信小程序 sha1 实现密码加密
- 机器学习基石笔记:04 Feasibility of Learning
- 关于Flutter初始化流程,我必须告诉你的是...
- Windows结构化异常处理浅析
- DVWA--XSS解题过程
- h5做列表 水平分割
- 绩效沟通-BEST原则
- hadoop的两大核心之一:HDFS总结
- Scala学习(二)--- 控制结构和函数
- 用node.js写一个简单爬虫,并将数据导出为 excel 文件
- swift开发之--UISearchBar的使用/UISearchController的使用
热门文章
- 通达OA 页面敏感信息-2013/2015版本
- 【Azure API 管理】从微信小程序访问APIM出现200的空响应的问题中发现CORS的属性[terminate-unmatched-request]功能
- P2014 选课 题解(树形DP)
- UI透明欺诈
- .Net5 下Dictionary 为什么可以在foreach中Remove
- 电影AI修复,让重温经典有了新的可能
- PTA 将数组中的数逆序存放
- time模块&;datetime模块
- Detach blobs with a contact point
- Android Studio中Switch控件有关 thumb 和 track 用法