hdu 1498
来源:互联网 发布:天猫魔盒好用软件 编辑:程序博客网 时间:2024/06/06 20:11
多做题,学建图ING
#include <iostream>#include <cstdio>#include <vector>#include <cstring>#define MAX 200using namespace std;int g[MAX][MAX];int link[MAX],vis[MAX],map[MAX][MAX],mark[MAX],cnt[MAX];int n,m,k;int dfs(int u){ int i; for(i=1; i<=n; i++) { if( g[u][i] && !vis[i] ) { vis[i] = 1; if(link[i] == -1 || dfs(link[i])) { link[i] = u; return 1; } } } return 0;}int match(){ int i, ans = 0; for(i=1; i<=n; i++) { memset(vis,0,sizeof(vis)); ans += dfs(i); } //cout << ans << endl; return ans;}void init(){ memset(link,-1,sizeof(link)); memset(g,0,sizeof(g));}int main(){ int i,j,l,ans; while( scanf("%d%d",&n,&k) ) { if(n == 0 && k == 0) break; memset(mark,0,sizeof(mark)); for(i=1; i<=n; i++) { for(j=1; j<=n; j++) { scanf("%d",&map[i][j]); mark[map[i][j]] = 1; } } for(l=1; l<=50; l++) { if(mark[l]) { init(); for(i=1; i<=n; i++) for(j=1; j<=n; j++) { if(map[i][j] == l) g[i][j] = 1; } ans = match(); if(ans <= k) mark[l] = 0; } } int count = 0; for(i=1; i<=50; i++) { if(mark[i]) cnt[count++] = i; } if(count == 0) cout << -1 << endl; else { for(i=0; i<count-1; i++) { cout << cnt[i] << ' '; } cout << cnt[count-1] << endl; } } return 0;}
- hdu 1498
- hdu 1498
- HDU 1498
- hdu 1498
- hdu 1498 匈牙利算法
- hdu 1498 匈牙利算法
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- SVN
- c++primer 笔记(一)
- Android SQLiteDatabase query语句
- 常量变量的复习
- 多态的一个简单例子
- hdu 1498
- KL距离,Kullback-Leibler Divergence
- 判断文件编码是否为UTF
- 面试题之SQL
- 开博前言
- 关于内部类的例子
- 在.NET使用JSON作为数据交换格式
- uva 10010 我的哪里错了呢。。。
- 如何升级程序以适应4英寸的iPhone5显示屏