#include<bits/stdc++.h>
using namespace std; bool noway[][], Gra[][];
int arr[]; int linker[];
bool used[];
bool dfs(int u, int vN) {
for(int v = ; v <= vN; v++)
if(Gra[u][v] && !used[v]) {
used[v] = true;
if(linker[v] == - || dfs(linker[v], vN)) {
linker[v] = u;
return true;
}
}
return false;
}
int hungary(int vN) {
int res = ;
memset(linker,-,sizeof(linker));
for(int u = ; 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 = ; i <= n; i ++)
for(int j = ; j <= n; j ++)
if(noway[arr[i - ]][j] || noway[arr[i]][j])
Gra[i][j] = false;
for(int i = ; i <= n; i ++)
if(noway[arr[]][i] || noway[arr[n]][i])
Gra[][i] = false;
return hungary(n);
} int main() {
int n,m,a,b;
while(~scanf("%d%d",&n,&m)) {
if(n == ){
printf("0\n");
continue;
}
memset(noway, false, sizeof(noway));
for(int i = ; i < m; i ++) {
scanf("%d%d",&a,&b);
noway[b][a] = true;
}
int ans = ;
for(int i = ; i <= n; i ++) arr[i] = i;
do {
ans = min(solve(n), ans);
} while(next_permutation(arr + , arr + n + ));
printf("%d\n",ans);
}
return ;
}

Necklace (全排列 + 匈牙利)的更多相关文章

  1. HDU 5727 - Necklace - [全排列+二分图匹配][Hopcroft-Karp算法模板]

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5727 Problem DescriptionSJX has 2*N magic gems. ...

  2. TTTTTTTTTTTTTTTT hdu 5727 Necklace 阴阳珠 二分图匹配+暴力全排列

    Necklace Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Su ...

  3. HDU 5727 Necklace(全排列+二分图匹配)

    http://acm.split.hdu.edu.cn/showproblem.php?pid=5727 题意:现在有n个阳珠子和n个阴珠子,现在要把它们串成项链,要求是阴阳珠子间隔串,但是有些阴阳珠 ...

  4. HDU5727 Necklace(二分图匹配)

    Problem Description SJX has 2*N magic gems. N of them have Yin energy inside while others have Yang ...

  5. HDU 5727 - Necklace

    题意:( 0 <= n <= 9 )    现在有n颗阴珠子和n颗阳珠子,将它们阴阳相间圆排列构成一个环,    已知有些阴珠子和阳珠子不能放在相邻的位置,否则这颗阳珠子就会失去功效,   ...

  6. hdu 5727 Necklace 二分图匹配

    题目链接 给2*n个珠子, n<=9, n个阴n个阳. 然后将它们弄成一个环, 阴阳交替.现在给你m个关系, 每个关系给出a, b. 如果阳a和阴b挨着, 那么a就会变暗. 问你最小变暗几个阳. ...

  7. HDU 5727.Necklace-二分图匹配匈牙利

    好久没写过博客了,把以前的博客补一下. Necklace Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 65536/65536 K ( ...

  8. PHP实现全排列(递归算法)

    算法描述:如果用P表示n个元素的全排列,而Pi表示n个元素中不包含元素i的全排列,(i)Pi表示在排列Pi前面加上前缀i的排列,那么n个元素的全排列可递归定义为:    ① 如果n=1,则排列P只有一 ...

  9. hdu5651 xiaoxin juju needs help (多重集的全排列+逆元)

    xiaoxin juju needs help 题意:给你一个字符串,求打乱字符后,有多少种回文串.                      (题于文末) 知识点: n个元素,其中a1,a2,··· ...

随机推荐

  1. 【PyQt5-Qt Designer】PyQt5+eric6 安装和配置

    PyQt5+eric6 安装及配置 1.利用pip命令安装PyQt5 第一步:安装PyQt5 在cmd命令行中输入: pip install PyQt5 第二步:安装Qt的工具包 pip instal ...

  2. 【PyQt5-Qt Designer】窗口操作

    1.窗口最上栏最大化 最小化 关闭按钮显示 #设置最小化与最大化按钮 self.setWindowFlags(QtCore.Qt.Window) 将其添加到Ui_***  布局代码中即可 2.窗口知识 ...

  3. g++编译多个文件

    注意:头文件不用去指定,其是由#include命令进行管理的,只需要编译cpp文件就可以了: 举例: 有以下三个文件: a.h a.cpp main.cpp 那么编译可以有以下两种方式: 1.分开编译 ...

  4. 运行Maven工程中修改tomcat端口

    Maven 运行:clean tomcat7:run 若需要修改端口,则用clean -Dmaven.tomcat.port=8082 tomcat7:run

  5. 接口测试工具-Jmeter使用笔记(三:管理请求服务器信息和Headers参数)

    如果使用Jmeter同时执行多个http请求任务,就需要创建多个HTTP取样器,每一个取样器都来手动填写服务器信息和端口号,会非常消耗时间. 解决方法:Jmeter之HTTP请求默认值 1.添加方式 ...

  6. npm 安装包报错 rollbackFailedOptional

    npm config rm proxynpm config rm https-proxy 然后使用npm install -g cnpm --registry=https://registry.npm ...

  7. cxListView和dbgrid联动

    procedure TForm1.FormCreate(Sender: TObject); begin ClientDataSet1.First; while not ClientDataSet1.E ...

  8. wx工具栏,菜单栏,状态栏

    #!/usr/bin/env python # -*- coding: utf- -*- import wx import wx.py.images class ToolbarFrame(wx.Fra ...

  9. vue-element-dialog使用

    logout() { this.$confirm("你确定退出吗?", "提示:", { confirmButtonText: "确定", ...

  10. MYSQL: set names utf8是什么意思?

    set names utf8 是用于设置编码,可以再在建数据库的时候设置,也可以在创建表的时候设置,或只是对部分字段进行设置,而且在设置编码的时候,这些地方最好是一致的,这样能最大程度上避免数据记录出 ...