出自lxw部落格
給出n個點,然後給出m條雙向邊,邊有邊權。
再給出乙個大小為k的點集,求使得點集聯通的最小花費。
時間複雜度o(n*3^k + ce*2^k),其中c為spfa常數。
#include #define rep(i, a, b) for(int i = (a); i <= (b); i++)
using namespace std;
const int n = 1050;
const int m = 1e6;
const int inf = 0x3f3f3f3f;
int n,m,k,dp[n][1<<10],tot,endst,head[n];
bool vis[n][1<<10];
queueq;
struct eedge[m];
void ae(int u,int v,int w) ;
head[u] = tot;
edge[++tot] = (e);
head[v] = tot;
}void spfa(int sta) }}
}void init()
int main()
cin>>k;
int sup; //為任意乙個關鍵點
rep(i, 1, k)
endst = 1
spfa(sta);
}cout<}
return 0;
}
模板 斯坦納樹
include int main 斯坦納樹 time limit 1 sec memory limit 128 mb description 現在有乙個n m的矩陣,某些元素為0,剩下的元素大於0.現在你要選擇一些元素,使得任意兩個為0的元素都能夠通過選中的元素四連通.注意,若想達到要求,所有的0自...
模板 斯坦納樹
又是圖論裡的乙個可怕的資料結構。斯坦納樹的定義 給定個無向圖和圖上的一些點組成的點集,那麼能使這些點集連通的該圖的子樹就是該圖對於該點集的一顆斯坦納樹。那麼最小斯坦納樹就是所有斯坦納樹中邊權值和最小的一顆。其實就是最小生成樹問題的乙個衍伸,當這個點集包含圖中所有的點的時候那麼問題便轉換為最小生成樹。...
斯坦納樹小結
做題時偶然遇到就學了一下,並不是什麼很難的高科技。最小斯坦納樹和最小生成樹類似,不過為了達到最小開銷,最小斯坦納樹允許加一些額外點。例題 有一張圖,有 k kk 個關鍵點,選出一些邊,使這 k kk 個點形成連通塊,求邊權和的最小值。演算法流程 不難發現,這樣的連通塊一定是棵樹,成環的話隨便去掉環上...