bzoj4006 JLOI2015 管道連線

2022-05-02 05:03:08 字數 2263 閱讀 6293

小銘銘最近進入了某情報部門,該部門正在被如何建立安全的通道連線困擾。

該部門有 n 個情報站,用 1 到 n 的整數編號。給出 m 對情報站 ui;vi 和費用 wi,表示情報站 ui 和 vi 之間可以花費 wi 單位資源建立通道。

如果乙個情報站經過若干個建立好的通道可以到達另外乙個情報站,那麼這兩個情報站就建立了通道連線。形式化地,若 ui 和 vi 建立了通道,那麼它們建立了通道連線;若 ui 和 vi 均與 ti 建立了通道連線,那麼 ui 和 vi 也建立了通道連線。

現在在所有的情報站中,有 p 個重要情報站,其中每個情報站有乙個特定的頻道。小銘銘面臨的問題是,需要花費最少的資源,使得任意相同頻道的情報站之間都建立通道連線。

第一行包含三個整數 n;m;p,表示情報站的數量,可以建立的通道數量和重要情報站的數量。

接下來 m 行,每行包含三個整數 ui;vi;wi,表示可以建立的通道。最後有 p 行,每行包含兩個整數 ci;di,表示重要情報站的頻道和情報站的編號。

輸出一行乙個整數,表示任意相同頻道的情報站之間都建立通道連線所花費的最少資源總量。

5 8 4

1 2 3

1 3 2

1 5 1

2 4 2

2 5 1

3 4 3

3 5 1

4 5 1

1 11 2

2 32 4

4選擇 (1; 5); (3; 5); (2; 5); (4; 5) 這 4 對情報站連線。

對於 100% 的資料,0 正解:斯坦納森林。

斯坦納樹加強版——斯坦納森林。

首先,我們直接把所有關鍵點狀壓起來,整個跑一遍斯坦納樹。

然後對於每個狀態,我們忽略它的根是什麼,直接取每層狀態的最小值。

然後我們就可以直接列舉子集合並了,仔細想想發現這樣做是對的。

但是我們要注意一點,兩個不同根的狀態合併,合併以後可能是不連通的,所以我們要判斷狀態的合法性。

如果乙個狀態既不是不包含乙個頻道,又不是全部包含乙個頻道,那麼這個狀態是不合法的,可以直接丟掉。

1

//it is made by wfj_2048~

2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include

14#define inf (1<<30)

15#define all (1<16

#define n (1010)

17#define il inline

18#define rg register

19#define ll long long

20#define file(s) freopen(s".in","r",stdin),freopen(s".out","w",stdout)

2122

using

namespace

std;

2324

struct edgeg[10010

];25

26int f[n][1

<<11],ff[1

<<11],head[n],vis[n],q[1000010],mt[n],cal[12],id[12][12

],n,m,p,num;

2728 il int

gi()

3536 il void insert(rg int

from,rg int to,rg int

dis),head[from]=num; return;38

}3940 il int check(rg int

s)45

46 il void spfa(rg int

s)58

}59 vis[x]=0;60

}61return;62

}6364 il void

work()

73for (rg int s=1;ss)

79spfa(s);80}

81for (rg int i=1;i<=10;++i)

82for (rg int j=1;j<=id[i][0];++j) cal[i]|=mt[id[i][j]];

83for (rg int s=1;ss)89}

90 printf("

%d\n

",ff[all-1]); return;91

}9293int

main()

bzoj4006 JLOI2015 管道連線

傳送門 思路 一眼看上去很像斯坦納樹 但是限制稍有不同,只要每種顏色的點聯通即可 也就是說最後可能是森林 我聽說裸寫斯坦納樹有90 所以我們要在外面再套一層dp f i j 還是斯坦納樹的狀態,i是以i為根,j是狀態為j 先用斯坦納樹求出每種聯通狀況的最小費用 再設dp i 表示i這個狀態的最小費用...

bzoj4006 JLOI2015 管道連線

小銘銘最近進入了某情報部門,該部門正在被如何建立安全的通道連線困擾。該部門有 n 個情報站,用 1 到 n 的整數編號。給出 m 對情報站 ui vi 和費用 wi,表示情 報站 ui 和 vi 之間可以花費 wi 單位資源建立通道。如果乙個情報站經過若干個建立好的通道可以到達另外乙個情報站,那麼這...

bzoj 4006 JLOI2015 管道連線

time limit 30 sec memory limit 128 mb submit 1062 solved 576 submit status discuss 小銘銘最近進入了某情報部門,該部門正在被如何建立安全的通道連線困擾。該部門有 n 個情報站,用 1 到 n 的整數編號。給出 m 對情...