图染色
来源:互联网 发布:国家开放大学网络教育 编辑:程序博客网 时间:2024/04/20 21:38
#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>using namespace std;const int N=20+10;char ss[N][N];typedef unsigned LL;int mp[N][N];int top,sta[N],clo[N];int num,vis[N][N],ti,s1;int dfs(int dep){ if(dep==top){ num--; return 1; } int fg=++ti; int u=sta[dep]; for(int i=0;i<dep;i++){ int v=sta[i]; if(mp[u][v]){ //printf("%d %d\n",u,v); vis[dep][clo[i]]=fg; } } for(int i=1;i<num;i++){ if(vis[dep][i]!=fg){ clo[dep]=i; if(dfs(dep+1))return 1; } } return 0;}int dp[1<<20];int main(){ #ifdef DouBi freopen("in.cpp","r",stdin); #endif // DouBi int T;scanf("%d",&T); while(T--){ int n;scanf("%d",&n); for(int i=0;i<n;i++)for(int j=0;j<n;j++)scanf("%d",&mp[i][j]); int ed=1<<n; memset(vis,0,sizeof(vis)); ti=0; dp[0]=0; for(int i=1;i<ed;i++){ top=0; num=0; for(int j=0;j<n;j++){ int bt=1<<j; if(i&bt){ sta[top++]=j; num=max(num,dp[i^bt]); } } num++; int fg=1; for(int j=0;j<top&&fg;j++){ for(int k=0;k<j;k++){ if(mp[sta[j]][sta[k]]==0){ fg=0;break; } } } if(!fg)dfs(0); dp[i]=num; } } return 0;}
0 0
- 图染色
- 【图染色】ZOJ 2066
- 连通图染色
- 二分图染色模板
- UVA193图染色问题
- 二分图染色
- 二分图染色模板
- 【模板】二分图染色
- 二分图染色问题
- UVa193图染色
- 【JZOJ 5490】 图染色
- 染色
- 染色
- 染色
- zoj1462 二分图染色+DP
- uva10004 Bicoloring 二分图染色
- sgu172:eXam(二分图染色)
- 二分图判定(染色法)
- C语言中有符号数和无符号数类型转换的用法深度解析
- TensorFlow最新应用&资源集锦
- 哈密尔顿回路
- DataTable实现行转换列
- SSH框架整合完整步骤
- 图染色
- 图的遍历DFS【邻接矩阵】
- lightoj 1090 - Trailing Zeroes (II)
- 最大团
- Java Web—初识function
- js正则表达式基础语法
- java开发中遇到的Bug整理
- 【十七】离散与维数灾难
- 逆序数求解--归并法