codevs2930填报志愿

来源:互联网 发布:华益天信java 编辑:程序博客网 时间:2024/04/27 02:55

f*ck it 

尼玛死测试数据和说好的不一样啊

怎么能不输出字典序最小的方案

写了那么仔细还看了好多遍  还是给坑WA了两次

在此深深对出题人(出数据人)表示深深的  鄙弃biqi


好了,,这是二分图匹配 

裸匈牙利  (貌似模板就是最好的说明了)


#include <cstring>#include <cstdio>#define cle(a,b) memset(a,b,sizeof a)#define L(i,j,k) for(int i = j;i <= k;i++)int n,m,k,t,ans;int e[1001][5001];int o[5001],vis[1001],match[1001];void read () {scanf("%d",&n);L(i,1,n) {scanf("%d",&k);L(j,1,k)e[i][scanf("%d",&t),t] = 1;}scanf("%d",&m);L(i,1,m)o[scanf("%d",&t),t] = 1;}bool find (int u) {L(i,1,n) {if(e[i][u] && !vis[i]) {vis[i] = 1;if(!match[i] || find(match[i])) {match[i] = u;return 1;}}}return 0;}int main () {read();L(i,1,5000) {if(!o[i])continue;cle(vis,0);if(find(i))ans++;}printf("%d\n",ans);}


0 0
原创粉丝点击