图的色数
紫書P286:
?
經典問題,無向圖 G ,每個節點染色,相鄰的節點不同色,求最少多少顏色。
設 d(S) 表示把節點 S 染色,所需要的最少顏色。 則有 d(S) = d(S-S') + 1; S'是可以染成一種顏色的,(即S'沒有u,v使得u,v相鄰)。然后就是在S中枚舉這個子集 S'了。
#include <bits/stdc++.h> using namespace std;#define maxnode 1000 #define INF 0x3f3f3f3fint n; ///節點個數 int d[maxnode<<1]int main() {d[0] = 0;for(int S=1;S<(1<<n);S++) {d[S] = INF;for(int S0 = S; S0 ; S0 = (S0-1)&S) {if(no_edges_inside[S0]) d[S] = min(d[S],d[S-S0]+1);}}return 0; }?
轉載于:https://www.cnblogs.com/TreeDream/p/6013723.html
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
- 上一篇: 多网卡无法上外网的解决
- 下一篇: 06-Java 本地文件操作