题面

题意

给出一张\(n\)点\(m\)边无向连通图,求每条边出现在多少个割集中。

\(n\le20,m\le\frac{n(n-1)}{2}\)

sol

所谓割集,就是指把\(n\)个点分成两个集合后,两个集合分别都是连通的。

所以我们可以预处理出每一个点集是否连通。

考虑边\((u,v)\)。实际上\((u,v)\)要出现在割集中,\(u,v\)就必然在不同的点集中。

来一波总方案减不合法

所有可行的割的方案减去\(u,v\)在同一个割集里面的方案。

\(u,v\)在同一个割集里面的方案实际上就是集合\(\{u,v\}\)的超集之和。高维前缀和搞一搞。

前面那个预处理每个点集是否连通,使用\(bfs\)处理。

处理出每个点集的相邻点集,每次\(bfs\)时候向外扩展一个节点,若未访问就丢到队列里面去。

复杂度\(O(n\log{n})\)

code

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
#define ll long long
int gi()
{
int x=0,w=1;char ch=getchar();
while ((ch<'0'||ch>'9')&&ch!='-') ch=getchar();
if (ch=='-') w=0,ch=getchar();
while (ch>='0'&&ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=getchar();
return w?x:-x;
}
const int N = 1<<21;
int T,n,m,all,u[500],v[500],reach[N],able[N],sum,tot[N];
queue<int>Q;
inline int lowbit(int k){return k&-k;}
int main()
{
T=gi();
for (int zsy=1;zsy<=T;++zsy)
{
n=gi();m=gi();all=(1<<n)-1;sum=0;
memset(reach,0,sizeof(reach));
memset(able,0,sizeof(able));
memset(tot,0,sizeof(tot));
for (int i=1;i<=m;++i)
{
u[i]=gi();v[i]=gi();
reach[1<<u[i]]|=1<<v[i];
reach[1<<v[i]]|=1<<u[i];
}
for (int i=0;i<=all;++i)
reach[i]=reach[lowbit(i)]|reach[i^lowbit(i)];
for (int i=0;i<n;++i)
Q.push(1<<i),able[1<<i]=1;
while (!Q.empty())
{
int u=Q.front();Q.pop();
int tmp=reach[u];
while (tmp)
{
int v=u|lowbit(tmp);
if (!able[v]) able[v]=1,Q.push(v);
tmp^=lowbit(tmp);
}
}
for (int i=0;i<=all;++i)
if (able[i]&&able[i^all])
++sum,++tot[i];
sum>>=1;
for (int j=0;j<n;++j)
for (int i=all;i>=0;--i)
if ((i&(1<<j))==0) tot[i]+=tot[i|(1<<j)];
printf("Case #%d:",zsy);
for (int i=1;i<=m;++i)
printf(" %d",sum-tot[(1<<u[i])|(1<<v[i])]);
puts("");
}
}

[HDU5765]Bonds的更多相关文章

  1. HDU5765 Bonds 最小割极

    http://acm.hdu.edu.cn/showproblem.php?pid=5765 题意:无向连通图,问每条边在几个最小割极上 思路:用位压形式,表示边的关系.g[1<<i]=1 ...

  2. HDU 5765 Bonds 巧妙状压暴力

    题意:给一个20个点无向连通图,求每条边被多少个极小割集包括 分析:极小割集是边的集合,很显然可以知道,极小割集恰好吧原图分成两部分(这个如果不明白可以用反证法) 然后就是奉上官方题解:http:// ...

  3. QiQi and Bonds

    只有链接:http://sdu.acmclub.com/index.php?app=problem_title&id=961&problem_id=23685 题意:现在有n个QiQi ...

  4. HDU 5765 Bonds(状压DP)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5765 [题目大意] 给出一张图,求每条边在所有边割集中出现的次数. [题解] 利用状压DP,计算不 ...

  5. HDU 5765 Bonds

    比赛时候想了好久,不会.看了官方题解才会...... Bond是极小割边集合,去掉一个Bond之后,只会将原图分成两个连通块. 假设某些点构成的集合为 s(点集中的点进行状压后得到的一个十进制数),那 ...

  6. HDU.5765.Bonds(DP 高维前缀和)

    题目链接 \(Description\) 给定一张\(n\)个点\(m\)条边的无向图.定义割集\(E\)为去掉\(E\)后使得图不连通的边集.定义一个bond为一个极小割集(即bond中边的任意一个 ...

  7. bonds

    Linux--多网卡的7种Bond模式 http://www.cnblogs.com/lcword/p/5914089.html 七种网卡绑定模式详解:  http://blog.csdn.net/w ...

  8. Why did I have a recovery trip

    For more than a decade, I felt most at ease living out of a suitcase, never quite sure where I might ...

  9. 探索C#之微型MapReduce

    MapReduce近几年比较热的分布式计算编程模型,以C#为例简单介绍下MapReduce分布式计算. 阅读目录 背景 Map实现 Reduce实现 支持分布式 总结 背景 某平行世界程序猿小张接到B ...

随机推荐

  1. Discuz的安装与使用

    Discuz的安装与使用 一.Discuz的安装 由于本机已经安装好XAMPP集成工具,后续Discuz访问数据库以及服务器等都是基于XAMPP环境.在主机localhost根目录下新建bbs文件夹. ...

  2. 剑指offer第七天

    30.连续子数组的最大和 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决 ...

  3. CodeForces-748D 贪心

    这题的思维难度不是很大,属于编程实现细节处理较多的题. 暂且把每个字符串的"beauty"称为魅力值,用一个优先队列数组将同一个字符串的所有魅力值保存,通过map将不同字符串编号, ...

  4. poj2635 同余定理 + 素数筛法

    题意:给定一个数,这个数是两个素数的乘积,并给定一个限制L,问是否两个素数中存在小于L的数,若存在输出较小质数,否则打印'GOOD'. 思路: 1 . x = a * b, a和b都是素数,那么x只能 ...

  5. ElasticSearch AggregationBuilders java api常用聚会查询

    以球员信息为例,player索引的player type包含5个字段,姓名,年龄,薪水,球队,场上位置.index的mapping为: "mappings": { "pl ...

  6. 【开源项目】智能电视及电视盒子的控制应用TVRemoteIME的接口说明

    一.APP项目介绍: APP名称:TVRemoteIME 功能说明:安卓智能电视或者安卓盒子的控制应用,可跨屏远程输入.远程遥控(代替遥控器)盒子.盒子应用及文件管理.HTTP/RTMP/MMS网络视 ...

  7. [HNOI2014]道路堵塞

    题目描述 A国有N座城市,依次标为1到N.同时,在这N座城市间有M条单向道路,每条道路的长度是一个正整数.现在,A国交通部指定了一条从城市1到城市N的路径,并且保证这条路径的长度是所有从城市1到城市N ...

  8. Linux基础六

    用户账号管理 基于账号身份对资源访问进行控制 账户类别:用户账号,组账号 识别方式:UID,GID 用户账号:超级用户root,系统用户,普通用户 组账号:用来区分权限,不用于登陆 基本组(私有组) ...

  9. windows下常用工具

    下面是平时自用的一些软件,感觉挺好用的,推荐给大家咯. everything 搜索神器 faststone capture 红绿小工具,工具小功能强 clcl 复制粘贴神器 f.lux linux和w ...

  10. jquery 图片转为base64

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...