輸入1:
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 1
1 2
2 3
2 4
輸入2:
5 8 4
1 2 2
1 3 2
1 5 1
2 4 2
2 5 2
3 4 2
3 5 1
4 5 1
1 1
1 2
2 3
2 4sample output
輸出1:
4 【樣例說明1】
選擇(1,5), (3, 5), (2, 5), (4, 5) 這4 對情報站連線。
輸出2:
4 【樣例說明二】
選擇(1,2), (3, 4) 這2 對情報站連線。
多個點的聯通容易聯想到斯坦納樹
但是已經忘記了怎麼打了
看了一下之後發現是鬆弛(spfa)加上自己與自己的配對
其實就是包含很多劣解以及最優解的乙個做法
可是這題不用形成一棵樹,只要每種顏色都在同乙個聯通塊就可以了
那麼再設dp[x]表示當前完成的狀況為x,保證每一次新加的森林都是包含若干完整顏色的就好了
#include
#include
#include
#include
#include
#define fo(i,a,b) for(i=a;i<=b;i++)
#define min(x,y) ((x)
using
namespace
std;
const
int maxp=13,maxn=3005;
int fi[maxn],ne[maxn*2],dui[maxn*2],dui1[maxn*2],qc[maxn];
int f[1005][1
<3],cc[maxn],dp[1
bool zh[1
void add(int x,int y,int z)
void spfa(int z)
}k=ne[k];
}bz[x]=false;
}}int main()
fo(i,1,p)
cc[0]=1;
fo(i,1,10) cc[i]=cc[i-1]*2;
fo(i,1,10)
memset(f,3,sizeof(f)); cz=f[1][1];
fo(i,1,n) f[i][0]=0;
fo(i,1,p) f[a[i][2]][cc[i-1]]=0;
fo(i,1,cc[p]-1)
if (f[j][i]true;}}
spfa(i);
}fo(i,1,cc[p]-1)
}memset(dp,66,sizeof(dp)); dp[0]=0;
fo(i,1,cc[p]-1)if (zh[i])
}printf("%d",dp[cc[p]-1]);
return
0;}
JLOI2015 管道連線
小銘銘最近進入了某情報部門,該部門正在被如何建立安全的通道連線困擾。該部門有 n 個情報站,用 1 到 n 的整數編號。給出 m 對情報站 ui vi 和費用 wi,表示情報站 ui 和 vi 之間可以花費 wi 單位資源建立通道。如果乙個情報站經過若干個建立好的通道可以到達另外乙個情報站,那麼這兩...
JLOI2015 管道連線
題意 給定一張n個點m條邊的無向圖,有p個關鍵點,分成了c類。連通每條邊有乙個代價 w i 求最小代價使得同一類的關鍵點都聯通。n leq 1000,p leq 10 題解 如果直接跑斯坦納樹會強行把所有關鍵點聯通,但實際上兩類關鍵點不一定非要聯通。相當於我們求了一棵斯坦納樹,但要求的是斯坦納森林。...
JLOI2015 裝備購買
有n件裝備 每個裝備有m個引數和乙個 如果某個裝備能夠被已經買過的裝備組合出來 即 b1zi1 bpzip zh b 是實數 那麼就不需要買這件裝備 求最多的買裝備數和最少的錢 大佬 線性基裸題 我 不會啊 線性相關 一組資料中有乙個或者多個量可以被其餘量表示。所以題面顯然就是線性相關的定義,直接上...