题意:一周上7天课,每天12节课,学校最多开设300节不同的课,每周每种课可以只有一个上课时间或者多个上课时间(上课内容一样),问一周最多可以选多少节课。

分析:二分图最大匹配,将一周84个时间点和可选的课程匹配,找出最大匹配,匈牙利。

总结:仿照poj2446的代码写的,熟悉了这种最简单的二分图匹配问题。

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std; #define Del(x,y) memset(x,y,sizeof(x))
int map[][],vis[],link[];
int n; bool dfs(int x)
{
for(int i=;i<=n;i++)
if(map[x][i]==&&vis[i]==)
{
vis[i]=;
if(link[i]==-||dfs(link[i]))
{
link[i]=x;
return true;
}
}
return false;
} void solve()
{
int ans=;
Del(link,-);
for(int i=;i<=;i++)
{
Del(vis,);
if(dfs(i))
ans++;
}
printf("%d\n",ans);
} int main()
{
int t,p,q;
while(~scanf("%d",&n))
{
Del(map,);
for(int i=;i<=n;i++)
{
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&p,&q);
map[*(p-)+q][i]=;
}
}
solve();
}
return ;
}

最新文章

  1. [LeetCode] N-Queens N皇后问题
  2. ajax内调用WCF服务
  3. vim - char code and charset
  4. 一些关于HTTP协议、表单和……的备忘
  5. JQuery判断数组中是否包含某个元素$.inArray(&quot;js&quot;, arr);
  6. 用Swift重写公司OC项目(Day1)--程序的AppIcon与LaunchImage如何设置
  7. js bind
  8. flume-agent实例
  9. 大数据工具篇之Hive与HBase整合完整教程
  10. Html网页的代码
  11. centos mono
  12. linux下ssd电子盘速度检测
  13. hdu 5266 pog loves szh III(lca + 线段树)
  14. java垃圾回收总结(2)
  15. java HttpClient设置代理
  16. throws与throw
  17. 制作Win10 U盘版移动便携系统
  18. 深入浅出的webpack构建工具---ParallelUglifyPlugin优化压缩(十)
  19. VSCode 拓展插件推荐
  20. [Android Studio] Using Java to call OpenCV

热门文章

  1. 【hdu3966】Aragorn&#39;s Story
  2. Grunt学习日记
  3. cssTest
  4. Junit 测试基础
  5. VS-按F12无法跳转到函数定义,点击右键也无法跳转
  6. 关于移动平台的viewport
  7. 下载、编译、运行android 7.1系统(ubuntu 16.0.4)【转】
  8. JSP-Runood:Eclipse JSP/Servlet 环境搭建
  9. Tool:CorelDRAW
  10. 几个SQL小知识(转)