哪个网站跨境电商做的最好,容桂免费网站建设公司,从入门到精通网站建设,法人查询网二进制数子集的取法,结果不会输出0#xff0c;且从大到小 for(int i0 i;i0;i0(i0-1)i)couti0endl; 题意#xff1a; 给定一个 N个点的图#xff0c; 求它的每一个子图的最小染色数 染色方法是所有子图中相连接两点颜色不一致 其中 N≤18 题解…二进制数子集的取法,结果不会输出0且从大到小 for(int i0 i;i0;i0(i0-1)i)couti0endl; 题意 给定一个 N个点的图 求它的每一个子图的最小染色数 染色方法是所有子图中相连接两点颜色不一致 其中 N≤18 题解 先状压表示出所有的子集状态即每个子集取那些点 然后枚举出那些子集是独立集即没有边相连 然后dp将每个子集的独立集取出并取min求出答案 #include cstdio
#include cstring
#include vector
#include algorithm
#include iostream
#include map
#include queue
#include stack
using namespace std;
#define PF(x) cout debug: x ;
#define EL cout endl;
#define PC(x) puts(x);
typedef long long ll;
const int maxn 10000010;
const int MOD 1e97;
int t,n,inv[120];
char g[30][30];
ll res[120];
int main()
{// freopen(in.txt,r,stdin);cint;while(t--){memset(inv,0,sizeof(inv));scanf(%d,n);for(int i0;in;i){scanf(%s,g[i]);//coutg[i]1endl;}int fg(1n)-1;for(int i1;ifg;i){for(int j0;jn;j){if((ij)1){for(int k j1;k n;k ){if(((ik)1)g[j][k]1){inv[i]1;//非独立集标志为1break;}}}if(inv[i])break;}}memset(res,0x3f,sizeof(res));res[0]0;for(int i1;ifg;i){for(int i0 i;i0;i0(i0-1)i){//取二进制数子集的方法if(!inv[i0]){res[i]min(res[i],res[i^i0]1);//coutres[i]endl;}}}unsigned int res11,ans0;for(int i1;ifg;i) ans(res1*233)*res[i];//用usigned会自动从0取膜正好取usigned的数据范围2^32printf(%u\n,ans);}return 0;
} 转载于:https://www.cnblogs.com/shimu/p/5762884.html