题目链接

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

我们求出阴的所有全排列, 是9!, 因为形成一个环。 所以可以想象成一个珠子是固定不变的, 剩下n-1个变, 所以就是8!。 然后对于每种情况, 就是我们熟悉的二分图匹配了。 对于两个阴珠之间的空隙, 如果阳珠可以放到这里就连一条边。 然后跑匈牙利匹配就可以了。 9!过不了...

#include <bits/stdc++.h>

using namespace std;
#define pb(x) push_back(x)
#define mem(a) memset(a, 0, sizeof(a))
#define mem1(a) memset(a, -1, sizeof(a))
const int inf = ;
int n, m;
vector <int> v[];
int g[][], a[], match[], vis[];
int dfs(int u)
{
for(int i = ; i < v[u].size(); i++) {
int tmp = v[u][i];
if(vis[tmp])
continue;
vis[tmp] = ;
if(match[tmp] == - || dfs(match[tmp])) {
match[tmp] = u;
return ;
}
}
return ;
}
int maxMatch()
{
mem1(match);
int ret = ;
for(int i = ; i <= n; i++) {
mem(vis);
ret += dfs(i);
}
return ret;
}
int solve()
{
for(int i = ; i < n; i++) {
a[i] = i+;
}
int ans = inf;
do {
a[n] = a[];
for(int i = ; i <= n; i++)
v[i].clear();
for(int i = ; i < n; i++) {
for(int j = ; j <= n; j++) {
if(!g[j][a[i]] && !g[j][a[i+]]) {
v[j].pb(i);
}
}
}
int tmp = maxMatch();
ans = min(ans, n-tmp);
} while(next_permutation(a+, a+n));
return ans;
}
int main()
{
int x, y;
while(~scanf("%d%d", &n, &m)) {
mem(g);
for(int i = ; i < m; i++) {
scanf("%d%d", &x, &y);
g[x][y] = ;
}
int ans;
if(n == )
ans = ;
else
ans = solve();
printf("%d\n", ans);
}
}

hdu 5727 Necklace 二分图匹配的更多相关文章

  1. hdu 5727 Necklace dfs+二分图匹配

    Necklace/center> 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5727 Description SJX has 2*N mag ...

  2. HDU 5727 Necklace(二分图匹配)

    [题目链接]http://acm.hdu.edu.cn/showproblem.php?pid=5727 [题目大意] 现在有n颗阴珠子和n颗阳珠子,将它们阴阳相间圆排列构成一个环,已知有些阴珠子和阳 ...

  3. HDU 5727 Necklace ( 2016多校、二分图匹配 )

    题目链接 题意 : 给出 2*N 颗珠子.有 N 颗是阴的.有 N 颗是阳的.现在要把阴阳珠子串成一个环状的项链.而且要求珠子的放置方式必须的阴阳相间的.然后给出你 M 个限制关系.格式为 ( A.B ...

  4. E - Swap - hdu 2819(简单二分图匹配)

    题意:如果可以交换行列,问主对角线能不能全为1 分析:要想主对角线全为1很明显要有N个行列不想同的点就行了,可以用二分图匹配计算出来多能有几个.如果小与N就不能.输出要是对的就行,不必和答案一样 ** ...

  5. A - Fire Net - hdu 1045(二分图匹配)

    题意:一个阵地可以向四周扫射,求出来最多能修多少个阵地,墙不可以被扫射透,阵地不能同行或者或者列(有墙隔着例外) 分析:很久以前就做过这道题..当时是练习深搜来着,不过时间复杂度比较高,现在再看突然发 ...

  6. HDU 5727 - Necklace

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

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

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

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

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

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

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

随机推荐

  1. sqlyog绿色破解版

    http://pan.baidu.com/s/1mghyUrY 下载地址

  2. iOS各种类

    http://www.isenhao.com/xueke/jisuanji/bcyy/objc.php http://www.code4app.com 这网站不错,收集各种 iOS App 开发可以用 ...

  3. iOS设计模式解析(五)责任链模式

    责任链模式:使多个对象都有机会处理请求,从而避免发送者和接受者之间发生耦合. 应用场景: 有多个对象可以处理请求,而处理程序只有在运行时才能确定 例如: 英雄联盟中伤害计算,伤害类型分为AP.AD.真 ...

  4. javaweb一周总结(菜鸟)

    我的试用期开始了. 这是我的第一篇博客,这也是我作为java工程师的第六天,主要是为了记录一周内出现的问题以及一些工作上的解答,吐槽一句工作的确和想的不一样之后直接记录下吧. 由于拥有工作平台看不到底 ...

  5. CreateMutex() 、ReleaseMutex()

    功能: CreateMutex() 用于有独占要求的程序 (在其进程运行期间不允许其他使用此端口设备的程序运行,或不允许同名程序运行). 比如运行金山词霸时,一次只能运行一个实例,当运行第二个实例时, ...

  6. jsp中利用java代码换行

    从数据库中取出的10条商品数据分两行显示,每行5条. <% for(int i=0; i<latestProducts.size(); i++) { Product p = latestP ...

  7. Android 截取本地图库图片 并显示

    package com.example.image; import android.app.Activity; import android.content.Intent; import androi ...

  8. C语言 —— 括号配对问题(不使用栈)

    最近在南阳理工的OJ上刷题,看到一个有点意思的题目 网上的答案大多都使用了栈,可惜我还没有学习数据结构,所以只能用简单的方法来解决 题目的链接在这 http://acm.nyist.net/Judge ...

  9. WIFI无线adb调试android

    有个需求需要支持android插上键盘,鼠标等外设,但是这样就不能使用microusb口进行adb调试了. 研究了一番,发现可以利用wifi进行adb无线调试(adb应该本身已经支持无线调试). WI ...

  10. 动态规划-Burst Balloons

    Burst Balloons Given n balloons, indexed from 0 to n-1. Each balloon is painted with a number on it ...