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