Necklace (全排列 + 匈牙利)
#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 (全排列 + 匈牙利)的更多相关文章
- HDU 5727 - Necklace - [全排列+二分图匹配][Hopcroft-Karp算法模板]
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5727 Problem DescriptionSJX has 2*N magic gems. ...
- TTTTTTTTTTTTTTTT hdu 5727 Necklace 阴阳珠 二分图匹配+暴力全排列
Necklace Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Su ...
- HDU 5727 Necklace(全排列+二分图匹配)
http://acm.split.hdu.edu.cn/showproblem.php?pid=5727 题意:现在有n个阳珠子和n个阴珠子,现在要把它们串成项链,要求是阴阳珠子间隔串,但是有些阴阳珠 ...
- HDU5727 Necklace(二分图匹配)
Problem Description SJX has 2*N magic gems. N of them have Yin energy inside while others have Yang ...
- HDU 5727 - Necklace
题意:( 0 <= n <= 9 ) 现在有n颗阴珠子和n颗阳珠子,将它们阴阳相间圆排列构成一个环, 已知有些阴珠子和阳珠子不能放在相邻的位置,否则这颗阳珠子就会失去功效, ...
- hdu 5727 Necklace 二分图匹配
题目链接 给2*n个珠子, n<=9, n个阴n个阳. 然后将它们弄成一个环, 阴阳交替.现在给你m个关系, 每个关系给出a, b. 如果阳a和阴b挨着, 那么a就会变暗. 问你最小变暗几个阳. ...
- HDU 5727.Necklace-二分图匹配匈牙利
好久没写过博客了,把以前的博客补一下. Necklace Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K ( ...
- PHP实现全排列(递归算法)
算法描述:如果用P表示n个元素的全排列,而Pi表示n个元素中不包含元素i的全排列,(i)Pi表示在排列Pi前面加上前缀i的排列,那么n个元素的全排列可递归定义为: ① 如果n=1,则排列P只有一 ...
- hdu5651 xiaoxin juju needs help (多重集的全排列+逆元)
xiaoxin juju needs help 题意:给你一个字符串,求打乱字符后,有多少种回文串. (题于文末) 知识点: n个元素,其中a1,a2,··· ...
随机推荐
- LeetCode 349 Intersection of Two Arrays 解题报告
题目要求 Given two arrays, write a function to compute their intersection. 题目分析及思路 给定两个数组,要求得到它们之中共同拥有的元 ...
- mysql分库 分表
原文链接:http://www.jianshu.com/p/89311703b320 传统的分库分表传统的分库分表都是通过应用层逻辑实现的,对于数据库层面来说,都是普通的表和库.分库分库的原因 首先, ...
- linux测试环境维护之磁盘空间维护
常见需要定期清理的日志有: 清理oracle监听日志: 1.进入/opt/oracle/db/diag/tnslsnr/sels-186/listener/alert目录下, 执行命令: rm -rf ...
- Postfix 邮件服务器搭建
搭建服务环境: Centos 6 配置域名hosts: mail.demonC6.com 1.清理系统自带的邮件软件 # rpm -qa | grep sendmail* # rpm -e sendm ...
- sqlite数据导入mysql
sqlite导出数据 1.首先将sqlite数据库中的数据库格式由db或者db3等转为.sql格式,方法如下: 首先是不修改路径的情况下,在命令行下(方法一): sqlite3 database_na ...
- 5分钟简述Spring中的DI与AOP
Spring的两个核心特性: 依赖注入(dependency injection,DI) 面向切面编程(aspect oriented programming,AOP) 依赖注入(dependency ...
- 【F12】谷歌浏览器--前台效果可以在不访问服务器的前提下直接改样式看效果是否是预期值。
F12-前台效果可以在不访问服务器的前提下直接改样式看效果是否是预期值. 1.Element---页面所有元素,通过它可以做selenium的元素定位,删除页面元素,增加页面属性(通过增加页面属性便于 ...
- [转载]MACD 各周期指标状态
MACD指标:MACD指标是一个非常好用的指标,它与均线.量价关系配合使用对判断行情很有效.这里有必要再深一点讲MACD级别之间的作用. 一.首先,必须明白的是任何指标中都是大级别包含小级别,小级别对 ...
- update moudle 调用方式
向数据库中添加数据 ztt_teacher 1: 创建一个 function moudle,设置该moudle类型为 update moudle 2: 向数据库添加数据的代码 FUNCTION ...
- pro*c的使用
一.什么是Pro*c程序 在oracle数据库管理系统中,有三种访问数据库的方法: 1.用 SQL*Plus,直接输入sql命令以命令行交换的方式访问数据库 2.用一些应用开发 ...