博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【BZOJ1305】 [CQOI2009]dance跳舞
阅读量:6820 次
发布时间:2019-06-26

本文共 1427 字,大约阅读时间需要 4 分钟。

Description

一次舞会有n个男孩和n个女孩。每首曲子开始时,所有男孩和女孩恰好配成n对跳交谊舞。每个男孩都不会和同一个女孩跳两首(或更多)舞曲。有一些男孩女孩相互喜欢,而其他相互不喜欢(不会“单向喜欢”)。每个男孩最多只愿意和k个不喜欢的女孩跳舞,而每个女孩也最多只愿意和k个不喜欢的男孩跳舞。给出每对男孩女孩是否相互喜欢的信息,舞会最多能有几首舞曲?

Input

第一行包含两个整数n和k。以下n行每行包含n个字符,其中第i行第j个字符为'Y'当且仅当男孩i和女孩j相互喜欢。

Output

仅一个数,即舞曲数目的最大值。

Sample Input

3 0
YYY
YYY
YYY

Sample Output

3

HINT

 

N<=50 K<=30

 
把男孩女孩都拆点为x,y
S向x连边,容量为a,y向汇点连边,容量为a
a可以二分,可以枚举(反正只有30)
男生x-->y连边为k,女生y-->x连边为k,男生喜欢女生在左部连边,反之在右部
1 #include
2 #include
3 #include
4 #include
5 using namespace std; 6 const int inf=100000000,N=1005; 7 struct ee{
int to,next,f;}e[500001]; 8 int head[N],q[N*2],dis[N],map[N][N]; 9 int S,T,n,m,cnt=1,ans,w,k,mx;10 11 void ins(int u,int v,int f){12 e[++cnt].to=v;e[cnt].f=f;e[cnt].next=head[u];head[u]=cnt;13 e[++cnt].to=u;e[cnt].f=0;e[cnt].next=head[v];head[v]=cnt;14 }15 16 bool bfs(){17 for (int i=1;i<=T;i++) dis[i]=inf;18 int h=0,t=1,now;19 q[1]=S;dis[S]=0;20 while(h!=t){21 now=q[++h];22 for (int i=head[now];i;i=e[i].next){23 int v=e[i].to;24 if (e[i].f&&dis[now]+1
>1;75 build(mid);76 ans=0;while(bfs()) ans+=dinic(S,inf);77 if(ans>=n*mid){mx=mid;l=mid+1;}78 else r=mid-1;79 }80 printf("%d",mx);81 }

 

转载于:https://www.cnblogs.com/wuminyan/p/5211719.html

你可能感兴趣的文章
java 多线程暂停与恢复:suspend,resume
查看>>
Jquery 获得<input type="text" id="test">中的value
查看>>
《Android开发从零开始》——38.WebView控件学习
查看>>
Windows Server 2012 Hyper-V PK VMware 性能
查看>>
IOS 手写控件 简单播放器 AVFoundation音乐播放
查看>>
FPGA设计——图像处理(均值滤波)
查看>>
Windows7无法访问共享文件夹(0x800704cf,0x80070035)解决方法
查看>>
ubuntu 个人使用技巧
查看>>
android JNI使用chdir来改变当前目录
查看>>
局域网络必备-mac地址修改
查看>>
Linux学习之逻辑卷管理
查看>>
一款功能强大并且可以结合html5实现本地存储的数据库 – SQLite学习文档
查看>>
about asm in linux
查看>>
我的友情链接
查看>>
通过Power Shell 管理Office 365
查看>>
ECMAScript 语法
查看>>
Flex 数据类型学习总结
查看>>
trac插件---due date
查看>>
python 基础知识
查看>>
ffff
查看>>