UVa 11045 My T-shirt suits me / 二分图
二分图建图 判断是否是完全匹配就行
最大流也行
#include <cstdio>
#include <cstring>
const int MAX = 300;
int a[MAX][MAX];
int Match[MAX];
bool vis[MAX];
char str[7][10] = {"XXL","XL","L","M","S","XS"};
int n,m; int get(char *s)
{
for(int i = 0;i < 6; i++)
{
if(strcmp(s,str[i]) == 0)
{
return i + 1;
}
}
} bool dfs(int u)
{
int i;
for(i = i;i <= m; i++)
{
if(!a[u][i])
continue;
if(vis[i])
continue;
vis[i] = true;
if(Match[i] == -1 || dfs(Match[i]))
{
Match[i] = u;
return true;
}
}
return false;
}
int match()
{
int ret = 0;
int i;
memset(Match,-1,sizeof(Match));
for(i = 1;i <= n; i++)
{
memset(vis,false,sizeof(vis));
if(dfs(i))
ret++;
}
return ret;
}
int main()
{
int t,i,j;
char s1[10];
char s2[10];
scanf("%d",&t);
while(t--)
{
scanf("%d %d",&n,&m);
memset(a,0,sizeof(a));
for(i = 1;i <= m; i++)
{
scanf("%s %s",s1,s2);
int id1 = get(s1);
int id2 = get(s2);
for(j = 0;j < n/6; j++)
{
a[id1+6*j][i] = 1;
a[id2+6*j][i] = 1;
}
}
if(match() == m)
puts("YES");
else
puts("NO");
}
return 0;
}
UVa 11045 My T-shirt suits me / 二分图的更多相关文章
- UVA 11045 My T-shirt suits me
一开始就想到网络流..后来一想暴力能不能过.自己写的T了.看了别人有暴力过的. 暴力的思路就是6进制数字表示给予的衣服的数量.然后每个人的需求表示成01 的6位串然后爆搜. 网络流就建一个源一个汇 然 ...
- UVa 1349 - Optimal Bus Route Design(二分图最佳完美匹配)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- UVa 1627 Team them up! (01背包+二分图)
题意:给n个分成两个组,保证每个组的人都相互认识,并且两组人数相差最少,给出一种方案. 析:首先我们可以知道如果某两个人不认识,那么他们肯定在不同的分组中,所以我们可以根据这个结论构造成一个图,如果两 ...
- UVA 1349 Optimal Bus Route Design (二分图最小权完美匹配)
恰好属于一个圈,那等价与每个点有唯一的前驱和后继,这让人想到了二分图, 把一个点拆开,点的前驱作为S集和点的后继作为T集,然后连边,跑二分图最小权完美匹配. 写的费用流..最大权完美匹配KM算法没看懂 ...
- UVA 11383 Golden Tiger Claw(最佳二分图完美匹配)
题意:在一个N*N的方格中,各有一个整数w(i,j),现在要求给每行构造row(i),给每列构造col(j),使得任意w(i,j)<=row(i)+col(j),输出row(i)与col(j)之 ...
- Root :: AOAPC I: Beginning Algorithm Contests (Rujia Liu) Volume 7. Graph Algorithms and Implementation Techniques
uva 10803 计算从任何一个点到图中的另一个点经历的途中必须每隔10千米 都必须有一个点然后就这样 floy 及解决了 ************************************* ...
- UVA 11045-My T-shirt suits me(二分图匹配)
题意:有N件T恤,N是6的倍数,因为有6种型号,每种件数相同,有M个人,每个人有两种型号的T恤适合他,每个人可以挑其中的一种,问能否所有的人都能分配到T恤. 解析:典型的二分图匹配,每N/6为同种T恤 ...
- UVa 二分图匹配 Examples
这些都是刘汝佳的算法训练指南上的例题,基本包括了常见的几种二分图匹配的算法. 二分图是这样一个图,顶点分成两个不相交的集合X , Y中,其中同一个集合中没有边,所有的边关联在两个集合中. 给定一个二分 ...
- UVa 二分图匹配 Biginners
UVa 1045 - The Great Wall Game 最小权匹配 题意:给你一个n*n的棋盘,上面有n个棋子,要求通过移动各个棋子使得棋子在同一行或者同一列或者对角线上,求最小移动次数. 思路 ...
随机推荐
- Java Web学习笔记(1)
1.项目名称用小写,类名用大小写骆驼式,对象名用骆驼式但是第一个字母是小写: 2.写对象属性时要空行,第一个方法也要空行,一般要加注释: 3.new 新的对象时等号左右要空格,if语句左右摇有空格: ...
- 如何查看.Net源代码vs版本号以及C#项目中各文件的含义
查看.Net源代码vs版本号以及C#项目中各文件的含义 用记事本打开vs项目的.sln文件. 第2行就是这个源代码包的开发软件vs版本号了 注意了,如果是vs2003的sln文件通常没有这行,可以判断 ...
- git 使用详情
一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以 ...
- 导出Excel并下载,但无法定制样式的方法!
拿来的,望原创见谅! public void EXCELDown(DataTable dt, string strFileName) { Response.ContentEncoding = Syst ...
- QListWidget 去掉选中项
1.先去掉选中项的虚线框: 设置为无焦点:把FocusPolicy设置成:NoFocus 2.设置QListWidgetItem标志 调用setFlags函数,去掉Qt::ItemIsSelectab ...
- spring 事务 笔记3.1
Spring事务 以前的事务都是编程式事务,需要开启和关闭,然后程序写在这里面 spring,声明式事务 Spring事务隔离级别 DEFAULT 使用数据库默认隔离级别 READ_UNCOMMITT ...
- cmake学习笔记(五)
在cmake 学习笔记(三) 中简单学习了 find_package 的 model 模式,在cmake 学习笔记(四)中了解一个CMakeCache相关的东西.但靠这些知识还是不能看懂PySide使 ...
- Codeforces Round #198 (Div. 2) 340C
C. Tourist Problem time limit per test 1 second memory limit per test 256 megabytes input standard i ...
- CUDA samples 2.3节 用CUDA示例来创建CUDA项目
2.3.1. Creating CUDA Projects for Windows 略 2.3.2 Creating CUDA Projects for Linux 默认的samples的安装路径 ...
- iOS多线程中的单例
#import "MyHandle.h" static MyHandle *handle = nil; @implementation MyHandle // 传统写法 // 此时 ...