zoukankan      html  css  js  c++  java
  • Necklace (全排列 + 匈牙利)

    #include<bits/stdc++.h>
    using namespace std;
    
    bool noway[20][20], Gra[20][20];
    int arr[20];
    
    int linker[20];
    bool used[20];
    bool dfs(int u, int vN) {
        for(int v = 1; v <= vN; v++)
            if(Gra[u][v] && !used[v]) {
                used[v] = true;
                if(linker[v] == -1 || dfs(linker[v], vN)) {
                    linker[v] = u;
                    return true;
                }
            }
        return false;
    }
    int hungary(int vN) {
        int res = 0;
        memset(linker,-1,sizeof(linker));
        for(int u = 1; u <= vN; u++) {
            memset(used,false,sizeof(used));
            if(dfs(u, vN))
                res++;
        }
        return vN - res;
    }
    
    int solve(int n) {
        memset(Gra, true, sizeof(Gra));
        for(int i = 2; i <= n; i ++)
            for(int j = 1; j <= n; j ++)
                if(noway[arr[i - 1]][j] || noway[arr[i]][j])
                    Gra[i][j] = false;
        for(int i = 1; i <= n; i ++)
            if(noway[arr[1]][i] || noway[arr[n]][i])
                Gra[1][i] = false;
        return hungary(n);
    }
    
    int main() {
        int n,m,a,b;
        while(~scanf("%d%d",&n,&m)) {
            if(n == 0){
                printf("0
    ");
                continue;
            }
            memset(noway, false, sizeof(noway));
            for(int i = 0; i < m; i ++) {
                scanf("%d%d",&a,&b);
                noway[b][a] = true;
            }
            int ans = 10000;
            for(int i = 1; i <= n; i ++) arr[i] = i;
            do {
                ans = min(solve(n), ans);
            } while(next_permutation(arr + 2, arr + n + 1));
            printf("%d
    ",ans);
        }
        return 0;
    }
    more crazy more get!
  • 相关阅读:
    iframe的使用小贴士
    jquery M97-datepicker日历控件
    CSS z-index 属性的使用方法和层级树的概念
    常用的js代码
    图片水平垂直居中
    server端和前端的区别
    nodejs模块化标准
    nodejs介绍
    小程序缓存Storage的基本用法
    小程序数据绑定的拓展用法
  • 原文地址:https://www.cnblogs.com/wethura/p/9727294.html
Copyright © 2011-2022 走看看