BZOJ4006 JLOI2015 管道連線

2022-05-08 04:48:08 字數 2129 閱讀 8256

作者部落格:

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

該部門有 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

20000。

正解:斯坦納樹

解題報告:

聽說這道題跟我寫的上一道題很像…

這道題略有不同的是,不同頻道之間的情報站的合併需要考慮清楚哪些是合法狀態,哪些是非法的。

也就是說,不能只處理單個的部分,因為有可能會漏掉一些解!

最好的處理方法就是在最後綜合答案的時候再把狀態的合法性判斷進去。

//it is made by ljh2000

#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;

typedef long long ll;

const int maxn = 3011;

const int maxm = 8011;

const int maxs = 2024;

int n,m,k,ecnt,first[maxn],to[maxm],w[maxm],next[maxm],id[12][maxn],f[maxn][maxs],s,head,tail,dui[maxn*100],g[maxs],cnt,zhuang[maxn],match[maxn];

bool vis[maxn];

inline void link(int x,int y,int z)

inline int getint()

inline bool ok(int s)

return true;

}inline void spfa(int s)

}} }

}inline void work()

memset(f,0x3f,sizeof(f)); s=(1}

spfa(s);

} for(int i=1;i<=cnt;i++)

for(int j=1;j<=id[i][0];j++)

zhuang[i]|=match[id[i][j]];

memset(g,0x3f,sizeof(g));

//不能只處理單個的部分!因為有可能會漏掉一些解!最好的處理方法就是在最後綜合答案的時候再把狀態的合法性判斷進去

for(int s=1;s<=s;s++) for(int i=1;i<=n;i++) if(f[i][s]/* for(int i=1;i<=10;i++) */

for(int s=1;s<=s;s++)

} printf("%d",g[s]);

}int 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 對情...