• 50 years, 50 colors HDU


    和棋盘游戏一个类型的题目

    矩阵转换为二分图最大匹配问题   每次碰撞气球都是一行或一列

    #include<bits/stdc++.h>
    using namespace std;
    #define MAXI 105
    int mp[MAXI][MAXI];
    int used[MAXI];
    int vis[MAXI];
    int n,m;
    int color[51];
    bool dfs(int  x,int color)
    {
        for(int j=1;j<=n;j++)
        {
            if(mp[x][j]==color&&!used[j])
            {
                used[j]=1;
                if(!vis[j]||dfs(vis[j],color))
                  {
                      vis[j]=x;
                      return true;
                  }
            }
        }
        return false;
    }
    
    int find1(int x)
    {    int ans=0;
     memset(vis,0,sizeof(vis));
         for(int i=1;i<=n;i++)
           {
               memset(used,0,sizeof(used));
               if(dfs(i,x))ans++;
           }
           return ans;
    }
    
    int main()
    {
      int k;
       while(scanf("%d%d",&n,&k)==2&&(n||k))
       {
           int ans[MAXI];
           memset(color,0,sizeof(color));
           memset(ans,0,sizeof(ans));
    
            for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
             {
               scanf("%d",&mp[i][j]);
               color[mp[i][j]]=1;
             }
    
           int n=0;
           for(int i=1;i<=50;i++)
           {
               if(color[i])
               {
                   if(k<find1(i))
                       ans[n++]=i;
               }
           }
    
           sort(ans,ans+n);
    
           if(n==0)printf("-1
    ");
           else
            {
             for(int i=0;i<n-1;i++)
               printf("%d ",ans[i]);
               printf("%d
    ",ans[n-1]);
            }
    
       }
      return 0;
    }
  • 相关阅读:
    2.1 CDN Bypass
    4.1 SQL Injection
    ztosec/secscan-authcheck 安装部署教程
    浏览器的内部构造
    左右值的概念
    网络安全学习路线
    Python+Typora博客图片上传
    微信欢乐五子棋辅助
    [SUCTF 2019]EasySQL
    [护网杯 2018]easy_tornado (SSTI)
  • 原文地址:https://www.cnblogs.com/bxd123/p/10364545.html
Copyright © 2020-2023  润新知