zoukankan      html  css  js  c++  java
  • Kuangbin 匹配专题

    HDU 2819

    因为矩阵的对角线全为1,所以是一个满秩矩阵 R(A) = N,初等变换不改变矩阵的秩,

    所以如果交换矩阵的行或矩阵的列不能得到完全匹配的话,交换行和列也无法得到

    /*
     * @Author: CY__HHH
     * @Date: 2019-10-27 17:36:57
     * @LastEditTime: 2019-10-27 22:22:23
     */
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<vector>
    const int maxn = 105;
    using namespace std;
    bool Grape[maxn][maxn];
    bool vis[maxn];
    int p[maxn],n;
    bool find(int u)
    {
        for(int v=1;v<=n;++v)
        {
            if(Grape[u][v]&&!vis[v])
            {
                vis[v] = true;
                if(p[v]==-1||find(p[v]))
                {
                    p[v] = u;
                    return true;
                }
            }
        }
        return false;
    }
    int main()
    {
        while(cin>>n)
        {
            memset(p,-1,sizeof(p));
            for(int i=1;i<=n;++i)
                for(int j=1;j<=n;++j)
                    cin>>Grape[i][j];
            int cnt = 0;
            for(int u=1;u<=n;++u)
            {
                memset(vis,false,sizeof(vis));
                if(find(u))
                    ++cnt;
            }
            if(cnt != n)
            {
                cout<<-1<<'
    ';
                continue;
            }
            vector<pair<int,int>> arr;
            for(int i=1;i<=n;++i)
            {
                if(p[i]!=i)
                {
                    for(int j=i+1;j<=n;++j)
                        if(p[j] == i)
                        {
                            arr.push_back(make_pair(p[j],p[i]));
                            swap(p[j],p[i]);
                        }
                }
            }
            cout<<arr.size()<<'
    ';
            for(int i=0;i!=arr.size();++i)
                cout<<"R"<<" "<<arr[i].first<<" "<<arr[i].second<<'
    ';
        }
    }
    

      

  • 相关阅读:
    445port入侵具体解释
    重构摘要12_大型重构
    Matlab画图-非常具体,非常全面
    期望DP
    自己实现一个SQL解析引擎
    信息熵(Entropy)究竟是用来衡量什么的?
    速算123,公布
    OCP-1Z0-051-题目解析-第28题
    选择排序
    Android入门第八篇之GridView(九宫图)
  • 原文地址:https://www.cnblogs.com/newstartCY/p/11749780.html
Copyright © 2011-2022 走看看