hdoj 5765 Bonds
来源:互联网 发布:淘宝打开店铺自动收藏 编辑:程序博客网 时间:2024/05/17 05:12
设
#include <bits/stdc++.h>using namespace std;int n,m;int uu[410];int vv[410];int edges[1<<20];inline int lowbit(int x){ return x&(-x);}int adj[22];bool bfs(int mask){ int conn = lowbit(mask); int T = n; while(T--){ for(int i=0;i<n;i++){ if(((1<<i)&mask) && ((1<<i)&conn)){ conn |= adj[i]; } } if((conn&mask) == mask){ return 1; } } return 0;}int main(){ int t; cin>>t; int cas = 0; while(t--){ cas++; memset(edges,0,sizeof(edges)); memset(adj,0,sizeof(adj)); cin>>n>>m; for(int i=0;i<m;i++){ int u,v; scanf("%d%d",&u,&v); uu[i] = u; vv[i] = v; adj[u] |= (1<<v); adj[v] |= (1<<u); } int End = 1<<n; int tot = 0; for(int k=1;k<End-1;k++){ if(k>(k^(End-1))){ continue; } if(bfs(k) && bfs(k^(End-1))){ edges[k] = 1; edges[k^(End-1)] = 1; tot++; } } for(int i=0;i<n;i++){ for(int j=1;j<End;j++){ if((1<<i)&j){ edges[(1<<i)^j] += edges[j]; } } } printf("Case #%d:",cas); for(int i=0;i<m;i++){ printf(" %d",tot - edges[(1<<uu[i])|(1<<vv[i])]); } printf("\n"); } return 0;}
0 0
- hdoj 5765 Bonds
- HDU 5765 Bonds
- Hdu 5765 Bonds
- hdu 5765 Bonds 状压
- Hdu-5765 Bonds(状压)
- HDU 5765 Bonds (二进制技巧)
- Hdu 5765 Bonds(高维前缀和)
- 【HDU 5765】Bonds(进制运算妙用)
- HDU 5765 Bonds(bfs+高维前缀和)
- coupon bonds
- 5 Basic Things To Know About Bonds
- HDOJ
- hdoj
- hdoj
- HDOJ
- android UiAutomator了解源码解决控件bonds[0,0]无法点击
- hdoj 1568 && hdoj 5344 && hdoj 5444
- HDOJ 2176
- Spark 源码调试一路通
- Jersey中的基于MVC模式的JSP跳转方式:Viewable与request转发。
- LeetCode进阶之路( Search for a Range)
- 加权异构信息网络中的基于语义路径的个性化推荐
- 初识PopupWindow
- hdoj 5765 Bonds
- Java IO 对字符的读取和写出
- Python 之 re模块 正则表达式
- 如何设置linux添加开机启动项
- 001:Why is it faster to process a sorted array than an unsorted array?
- java挑战高并发(8):使用synchronized获取互斥锁的几点说明
- Android 自定义百分比布局
- 进程间通讯
- vim中显示和关闭行号