hdu 1498 最小顶点覆盖
2017-07-28 15:16
197 查看
也是最小定点覆盖问题
只是多了点东西;
只是多了点东西;
#include<bits/stdc++.h> using namespace std; int map1[200][200]; struct node { int u,next; } e[400]; int f[200],book[200],color[200],out[200]; int n,k; int dfs(int x,int c) { for(int i=0;i<n;i++) { if(!book[i]&&map1[x][i]==c) { book[i]=1; if(f[i]==-1||dfs(f[i],c)) { f[i]=x; return 1; } } } return 0; } int main() { while(~scanf("%d%d",&n,&k)&&(n+k)) { memset(color,-1,sizeof(color)); for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { scanf("%d",&map1[i][j]); color[map1[i][j]]=1; } } int sum=0; for(int i=0; i<=50; i++) { if(!color[i])continue; memset(f,-1,sizeof(f)); int ans=0; for(int t=0; t<n; t++) { memset(book,0,sizeof(book)); if(dfs(t,i))ans++; } if(ans>k) out[sum++]=i; } if(sum==0) printf("-1\n"); else { for(int i=0;i<sum;i++) { if(i==0) printf("%d",out[i]); else printf(" %d",out[i]); } printf("\n"); } } }
相关文章推荐
- hdu 1498 最小顶点覆盖
- hdu 1498 50 years, 50 colors(最小顶点覆盖)
- HDU 1498 50 years, 50 colors (二分图最小顶点覆盖)
- HDU 1498 50 years, 50 colors(最小顶点覆盖)
- 50 years, 50 colors HDU - 1498(最小点覆盖或者说最小顶点匹配)
- 【二分图匹配(最小顶点覆盖)】hdu 1498 50 years,50 colors
- HDU 1498 50 years, 50 colors (行列匹配+最小顶点覆盖)
- hdu 1498 50 years, 50 colors(枚举,最小顶点覆盖)
- hdu 1498(二分图最小顶点覆盖)
- hdu 1498 50 years, 50 colors(最小顶点覆盖)
- HDU 1498 50 years, 50 colors (行列匹配+最小顶点覆盖)
- hdu 1054 Strategic Game (最小顶点覆盖+稀疏图)
- hdu 1150 Machine Schedule(最小顶点覆盖)
- hdu 1054 Strategic Game【最小顶点覆盖】
- HDU - 1150 最小顶点覆盖
- hdu 3360 National Treasures(最小顶点覆盖,黑白染色)
- HDU 1054 最小顶点覆盖 (树形dp)
- hdu 1498 50 years, 50 colors(二分匹配,最小点覆盖)
- HDU1498 二分匹配+最大顶点覆盖
- HDU 1054 Strategic Game (最小顶点覆盖)