HDU 2819 隐式二分图匹配
http://acm.hdu.edu.cn/showproblem.php?pid=2819
这道题乍一看是矩阵变换题,估计用矩阵之类的也可以做
但是分析一下就可以知道
要凑成对角线都是1,题目允许行变换和列变换
然而观察可以得知如果可以完成只需要行变换或者列变换之一即可
donser[i][j]=1表示i,j位置有1,那么只需要变换j到i(即交换i,j行)
输出中间过程用queue
加上dfs遍历即可
#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
int donser[][];
bool used[];
int leave[],a[],b[];
int M,num,abc,j;
queue<int >que;
void swap(int i,int j)
{
int t=leave[i];leave[i]=leave[j];leave[j]=t;
}
int dfs(int x)
{
for(int i=;i<=M;i++)
{
if(donser[x][i]&&!used[i])
{
used[i]=true;
if(!leave[i]||dfs(leave[i]))
{
leave[i]=x;
return ;
} }
}
return ;
}
int main()
{
while(~scanf("%d",&M))
{
memset(donser,,sizeof(donser));
memset(leave,,sizeof(leave));
for(int i=;i<=M;i++)
{
for(j=;j<=M;j++)
{
scanf("%d",&num);
if(num) {donser[i][j]=;}
}
}
num=abc=;
for(int i=;i<=M;i++)
{
memset(used,,sizeof(used));
if(dfs(i)){abc++;}
}
if(abc!=M) {cout<<"-1"<<endl;continue;}
abc=,j=;
for(int i=;i<=M;i++)
{
for(j=;j<=M && leave[j]!=i ;j++);
if(i!=j)
{
abc++;
que.push(i);
que.push(j);
swap(i,j);
}
}
cout<<abc<<endl;
while(!que.empty())
{
cout<<"C "<<que.front();
que.pop();
cout<<" "<<que.front()<<endl;
que.pop();
}
abc=;
}
return ;
}
HDU 2819 隐式二分图匹配的更多相关文章
- HDU 2819 Swap(二分图匹配)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=2819 [题目大意] 给出一个棋盘,由白格子和黑格子组成,可以交换棋盘的行列, 使得其主对角线为黑格 ...
- Android隐式启动匹配:action,category,data
简介 Android开发中,Activity,Service 和 BroadcastReceiver 启动有两种方式,显示启动和隐式启动. 为方便下面描述,我以Activity启动为例. 显示启动便是 ...
- HDU 1083 网络流之二分图匹配
http://acm.hdu.edu.cn/showproblem.php?pid=1083 二分图匹配用得很多 这道题只需要简化的二分匹配 #include<iostream> #inc ...
- hdu 5727 Necklace dfs+二分图匹配
Necklace/center> 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5727 Description SJX has 2*N mag ...
- HDU 5727 Necklace(二分图匹配)
[题目链接]http://acm.hdu.edu.cn/showproblem.php?pid=5727 [题目大意] 现在有n颗阴珠子和n颗阳珠子,将它们阴阳相间圆排列构成一个环,已知有些阴珠子和阳 ...
- Linux防火墙之iptables基本匹配条件和隐式扩展匹配条件
一.iptables的基本匹配条件 上一篇博文我们说到了iptables的基本工作原理.数据报文在内核的走向和管理链.管理规则.以及查看规则.导入和导出规则:回顾请参考https://www.cnbl ...
- hdu 5943(素数间隔+二分图匹配)
Kingdom of Obsession Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Oth ...
- HDU 5727 - Necklace - [全排列+二分图匹配][Hopcroft-Karp算法模板]
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5727 Problem DescriptionSJX has 2*N magic gems. ...
- hdu - 1150 Machine Schedule (二分图匹配最小点覆盖)
http://acm.hdu.edu.cn/showproblem.php?pid=1150 有两种机器,A机器有n种模式,B机器有m种模式,现在有k个任务需要执行,没切换一个任务机器就需要重启一次, ...
随机推荐
- Linux学习笔记(一)2015.4.13
研究生由单片机转Linux学习 首先安装VMware虚拟机,用的是VMware 10.0 在VMware 10.0上安装视频上推荐的Red Hat Linux 5 安装后正式进入Linux学习 笔记1 ...
- Tomcat配置并启用HTTPS
参考文献:http://www.cnblogs.com/xdp-gacl/p/3744053.html#blogTitle2 概述:用sun公司提供的keytool(位置为<JAVA_HOME& ...
- CV界的明星人物们
CV界的明星人物们 来自:http://blog.csdn.net/necrazy/article/details/9380151,另外根据自己关注的地方,加了点东西. 今天在cvchina论坛上看到 ...
- Ansible facts
facts组件是Ansible用于采集被管理机器设备信息的一个功能.可以使用setup模块查机器的所有facts信息,可以使用filter来查看指定信息.整个facts信息被包装在一个json格式的数 ...
- Windows Platform Predefined Macros
https://msdn.microsoft.com/en-us/library/b0084kay.aspx
- CentOS 6.5安装配置LNMP服务器(Nginx+PHP+MySQL)
CentOS 6.5安装配置LNMP服务器(Nginx+PHP+MySQL) 一.准备篇: /etc/init.d/iptables stop #关闭防火墙 关闭SELINUX vi /etc/sel ...
- jsp总结
JSP 定义: 1)Java Server Page, Java EE 组件,本质上是 Servlet. 2)运行在 Web Container.接收 Http Request,生成 Ht ...
- Mongodb的Samus驱动
最近开始学习Mongodb方面的东西.. 看到有很多博主都说MongoDB的第三方驱动 Samus 对Linq的支持比较好..能够降低学习的成本..所以就想从这里开始.. 但是弊端在我学习了一半的时候 ...
- bootstrap和bootstrap-select的outline设置
.btn:focus, .btn:active:focus, .btn.active:focus, .btn.focus, .btn:active.focus, .btn.active.focus { ...
- (转载)ecshop制作成手机网站的方法
ecshop用手机访问的时候,会自动跳转到 /mobile 目录下,ecshop自带的wap模板是用wml制作的,如果按这种情况,又需要制作一套模板,太麻烦,现在都是智能手机时代,wml模板已经不能 ...