FZU 1397 保送
Description
吉林一中是一所远近闻名的学校。每年都会有一些学生被保送到全国各个大学就读。最近,2006年的保送工作即将展开。 今年有N个人具有保送的资格(至少要在某些科目上获奖),并且有M个学校想要在吉林一中招收保送生。由于人数限制,每个学校都有他们的招收上限,而且在每个学生的心里也有他们理想的大学。 每个学校都有他们喜欢的科目,所以他们只招收在符合他们要求的科目上获奖的学生。 我们想要知道,最多可以有多少的学生可以同时保送。
Input
Output
Sample Input
Sample Output
#include<cstdio>
#include<cmath>
#include<map>
#include<string>
#include<queue>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=1e3+10;
int n,m,x,y,z;
char ss[maxn];
vector<string> s[maxn];
vector<int> t[maxn];
map<string,bool> M[maxn];
int v[maxn];struct MaxFlow
{const static int maxe = 2e5 + 10; //边数const static int maxp = 1e3 + 10; //点数const static int INF = 0x7FFFFFFF;struct Edges{int x, f;Edges(){}Edges(int x, int f) :x(x), f(f){}}edge[maxe];int first[maxp], next[maxe], dis[maxp], tot, work[maxp], n;void clear(int x){ n = x; tot = 0; for (int i = 0; i <= n; i++) first[i] = -1; }void AddEdge(int s, int t, int f){edge[tot] = Edges(t, 0); next[tot] = first[s]; first[s] = tot++;edge[tot] = Edges(s, f); next[tot] = first[t]; first[t] = tot++;}bool bfs(int s, int t){for (int i = 0; i <= n; i++) dis[i] = -1;queue<int> p; p.push(s); dis[s] = 0;while (!p.empty()){int q = p.front(); p.pop();for (int i = first[q]; i != -1; i = next[i]){if (edge[i ^ 1].f&&dis[edge[i].x] == -1){p.push(edge[i].x);dis[edge[i].x] = dis[q] + 1;if (dis[t] != -1) return true;}}}return false;}int dfs(int s, int t, int low){if (s == t) return low;for (int &i = work[s], x; i >= 0; i = next[i]){if (dis[s] + 1 == dis[edge[i].x] && edge[i ^ 1].f && (x = dfs(edge[i].x, t, min(low, edge[i ^ 1].f)))){edge[i].f += x; edge[i ^ 1].f -= x; return x;}}return 0;}int dinic(int s, int t){int maxflow = 0, inc = 0;while (bfs(s, t)){for (int i = 0; i <= n; i++) work[i] = first[i];while (inc = dfs(s, t, INF)) maxflow += inc;}return maxflow;}
}solve;int main()
{while (~scanf("%d%d",&n,&m),n+m) {for (int i=1;i<=n;i++){scanf("%d%d",&x,&y);t[i].clear(); s[i].clear();while (x--) scanf("%s",ss),s[i].push_back(ss);while (y--) scanf("%d",&z),t[i].push_back(z);}solve.clear(n+m+1);for (int i=1;i<=m;i++){scanf("%d%d",&v[i],&x); M[i].clear();while (x--) scanf("%s",ss),M[i][ss]=true;solve.AddEdge(i+n,m+n+1,v[i]);}for (int i=1;i<=n;i++){solve.AddEdge(0,i,1);for (int j=0;j<t[i].size();j++){for (int k=0;k<s[i].size();k++){if (M[t[i][j]][s[i][k]]){solve.AddEdge(i,t[i][j]+n,1);break;}}}}printf("%d\n",solve.dinic(0,n+m+1));}return 0;
}
FZU 1397 保送相关推荐
- fzu 2150 Fire Game 【身手BFS】
称号:fzu 2150 Fire Game :给出一个m*n的图,'#'表示草坪,' . '表示空地,然后能够选择在随意的两个草坪格子点火.火每 1 s会向周围四个格子扩散,问选择那两个点使得燃烧全部 ...
- 「乾坤」学霸同保送!双胞胎帅哥一起上北大,哥哥本科发表2篇SCI
视学算法报道 编辑:桃子 [新智元导读]有一种「默契」叫一起上北大.近日,一对双胞胎兄弟双双圆梦北大,哥哥李世乾被保送至北大信息科学技术学院直博,弟弟李世坤被保送至北大工学院.2022年,「乾坤」 ...
- 他保送北大、读完博士选择回中学任教,“做科研太枯燥,自己更适合教书”...
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 明敏 发自 凹非寺 量子位 报道 | 公众号 QbitAI 清北人才 ...
- 姚班学霸陈立杰:16岁保送清华,18岁拿下IOI世界冠军,现摘得FOCS 2019最佳学生论文...
郭一璞 安妮 发自 凹非寺 量子位 出品 | 公众号 QbitAI 今年的理论计算机顶会FOCS,一位来自浙江湖州的小哥哥一口气中了3篇论文,还拿下了最佳学生论文奖. 而且这不是偶然神迹,类似操作, ...
- FZU 1686 神龙的难题(DLX反复覆盖)
FZU 1686 神龙的难题 题目链接 题意:中文题 思路:每个1看成列,每个位置作为左上角的矩阵看成行.dlx反复覆盖就可以 代码: #include <cstdio> #include ...
- 免高考!2021清华北大保送名单公布,五大学科竞赛260人获保送资格
转载自:新智元 日前,清华.北大公布了2021年保送生拟录取名单,共371人.其中,北大193人,清华178人. 而在去年,共有367名学生保送清华北大. 由于清华大学.北京大学代表着我国高校中最顶尖 ...
- 中国队蝉联国际奥数冠军,6名选手获5金1银,3人保送北大、3人保送清华
点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 第61届国际数学奥林匹克竞赛(IMO)已公布赛果. 在本届IMO竞赛上,中国队以5金1银的成绩 ...
- FZU 1649 Prime number or not (Miller-Rabin素数测试)
题目链接:http://acm.fzu.edu.cn/problem.php?pid=1649 题目大意:很直接,判断一个数n(2<=n<=10^18)是不是素数. 当n达到long ...
- FZU 2159 WuYou
FZU 2159 题意:给你两个串,A串和B串,其中A串有些不确定.叫你求 A < B的最大A串 做法:一开始做错了.去问小坤子,他讲了一下他的思路.就是开一个 f 数组.f[i]表示从第i位开 ...
最新文章
- Python3 网络编程(转载)
- 快速入门分库分表概念原理
- 如何利用CycleGAN实现男女性别转换
- 【PAT乙级】1040 有几个PAT (25 分)
- 内部矩阵维度必须一致simulink_深度学习/目标检测之numpy——向量和矩阵乘法相关...
- Vue.js中data,props和computed数据
- 如何在excel 单元格中增加换行
- jquery 访问.ashx ashx取所传参数的值
- python qt信号在qml 的使用_Python和C++混合使用QML开发GUI
- 关于“指针数组”和”数组指针“
- 中国水密门市场趋势报告、技术动态创新及市场预测
- 基于Java的汽车租赁系统
- 高中计算机课程事例,【高中信息技术教学案例】_《高中信息技术新课程教学案例集》介绍...
- ubuntu下配置安装PyQt4
- 计算机网络基础简答题
- cocos2d-x : csb的加载
- 简单粗暴讲述自动化仓储系统
- 查看变量内存的python内置函数是_这68个Python内置函数,建议你吃透
- 数据交换技术:OPC技术工作原理简述
- oracle 索引快速全扫描,使用目录快速全扫描(Index FFS)避免全表扫描的若干场景
热门文章
- MySQL分区表的介绍及使用
- 题目: 编写一个程序,实现设置上月、本月电表读数,显示上月、本月电表读数,计算并显示本月用电数。假设每度电的价格为1.2元,计算并显示本月电费。
- 雷火神山直播超两亿,Web播放器事件监听是怎么实现的?
- 辉煌优配|汽车产业链股走高,嵘泰股份涨停,多利科技等大涨
- 分布式信息处理利用计算机的,分布式的信息处理需要利用计算机的什么
- 博思得RFID技术引领物联网智能打印
- 一起撸个朋友圈吧(step2) 数据结构(JSON结构)【下】篇
- 【c语言趣味编程100例】打鱼还是晒网
- from aip import AipFace 报错 No module named aip
- Ip网络技术组建--hybrid混合接口的简单配置例子