hdu_3360 National Treasures 最小点覆盖
来源:互联网 发布:windows启动盘下载 编辑:程序博客网 时间:2024/06/05 05:00
#include<cstdio>#include<cstring>#include<algorithm>#include<vector>using namespace std;#define N 52int dx[13]={-1,-2,-2,-1,1,2,2,1,-1,0,1,0};int dy[13]={-2,-1,1,2,2,1,-1,-2,0,1,0,-1};int edge[N][N];vector<int> g[N*N];int linker[N*N];bool vis[N*N];int hash1[N][N];struct node{int x,y;int val;}s[N*N];bool dfs(int u){for(int i=0;i<g[u].size();i++){int v=g[u][i];if(!vis[v]){vis[v]=1;if(linker[v]==-1||dfs(linker[v])){linker[v]=u;return true;}}}return false;}int hungary(int n){memset(linker,-1,sizeof(linker));int cnt=0;for(int i=0;i<n;i++){memset(vis,0,sizeof(vis));if(dfs(i)) cnt++;}return cnt;}int main(){int n,m,f=1;while(scanf("%d%d",&n,&m)!=EOF){if(!n&&!m) break;for(int i=1;i<=n*m;i++)g[i].clear();memset(hash1,-1,sizeof(hash1));int ans=0;int x;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){scanf("%d",&x);edge[i][j]=x;if(x==-1) continue;s[ans].val=x;s[ans].x=i;s[ans].y=j;hash1[i][j]=ans;ans++;}}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){for(int h=0;h<12;h++){int k=edge[i][j]&(1<<h);if(k==0) continue;if(edge[i][j]==-1) continue;int tx=i+dx[h];int ty=j+dy[h];if(tx<1||ty<1||tx>n||ty>m) continue;if(edge[tx][ty]==-1) continue;g[hash1[i][j]].push_back(hash1[tx][ty]);g[hash1[tx][ty]].push_back(hash1[i][j]);}}}printf("%d. %d\n",f++,hungary(ans)/2);}return 0;}
求最小点覆盖=二分图最大匹配
刚开始超时了,用两个循环枚举i=0-ans进行相连判断;果断超时,最后用hash记录每个二维坐标的id,枚举坐标,解决问题!!
- hdu_3360 National Treasures 最小点覆盖
- HDOJ 3360 - National Treasures 二分图的最小点覆盖
- HDU 3360-National Treasures(最小点覆盖+奇偶匹配)
- HDU 3360 National Treasures 奇偶匹配最小点覆盖
- hdu 3360 National Treasures(二分图匹配--最小点覆盖)
- HDU 3360 National Treasures 黑白染色+最小点覆盖 ACM Steps 6.3.8
- hdu 3360 National Treasures 最小顶点覆盖(最大匹配)
- hdu 3360 National Treasures(最小顶点覆盖,黑白染色)
- hdu 3360National Treasures
- National Treasures 6.3.8
- 最小点覆盖
- poj1325最小点覆盖
- poj_1325_最小点覆盖
- 最小点覆盖
- hdu1498最小点覆盖
- 最小点覆盖 模版
- poj2226(最小点覆盖)
- 最小点权覆盖
- HDU3836(tarjan+缩点)
- 建立词袋子模型
- stdarg.h函数用法(procedure)
- 串口------cfsetospeed和cfsetispeed函数
- HDU1885Key Task(状态压缩+BFS)
- hdu_3360 National Treasures 最小点覆盖
- <一>初探js特效魅力之div显示隐藏变色02
- JavaScript中字符串和数字
- uva 548 Tree
- 苹果按钮图标尺寸
- POJ3468A Simple Problem with Integers(线段树成段更新--Lazy标记)
- 家乡的互联网---山西阳高
- 在QEMU上用Busybox模拟ARM的文件系统
- OCP-1Z0-053-V12.02-360题