n個人,每個人都有乙份情報
人之間都可以交流,交流有對應的費用,交流完後各自享有對方的情報
a與b交流,a與c交流,b與c也可以互相享有
派遣乙個人去執行任務有對應的費用
要求:派遣的人需要包含所有的情報(不一定只派遣乙個)
問最小花費
2≤n≤1000
建立乙個新點s,
交流的人之間建邊,邊權為交流費用
所有的人向s建邊,邊權為派遣費用
那麼這題其實就是求乙個最小生成樹即可
#include #include #include #include #include #include #define rep(i, st, ed) for (int i = st; i <= ed; i++)
#define rwp(i, ed, st) for (int i = ed; i >= st; i--)
#define mt(x) memset(x, 0, sizeof(x))
#define mp(x, y) memcpy(x, y, sizeof(y))
#define lson(x) x * 2
#define rson(x) x * 2 + 1
#define inf 0x7fffffff
#define n 1005
using namespace std;
typedef long long ll;
struct node a[n*n];
int minx[n], fa[n], n, ans, cnt, s, sum;
int read(int &x)
while (s >= '0' && s <= '9')
return x * f;
}bool cmp(node aa, node bb)
int find(int x)
int main()
if (tot == n) break;
} printf("%d\n", sum);
}
最小生成樹 Jzoj P3237 間諜派遣
description 你是m,乙個僱傭n個標號為從1到n的間諜的情報機關的總管。每個間諜被派往不同的國家並在那獲取重要情報。如下是你的任務 1 在部分間諜間組織會面。每次會面在兩個間諜間進行,兩個間諜交換他們自己獲取的或從之前會面中得到的資訊。因為在不同國家的兩個間諜間組織機密會面很困難,所以每次...
JZOJ 3237 間諜派遣 最小生成樹
傳送門 每個間諜與其他間諜會面都會花費一定的費用,而最後指派某個間諜也會花費一定的費用 現在問我們在最優安排的情況下,最少需要花費的費用是多少 因為要花費最少的費用,所以直接對邊權排序,然後逐個加入圖中即可 include include include include include includ...
jzoj3237 間諜派遣 最小生成樹,並查集
一張圖,第i ii個點參加任務需要mki mk i mki 元,連線一條邊需要一定費用,要求每個聯通圖都有參加任務的點,求最小費用。其實就是求若干個最小生成樹然後這個最小生成樹的權值就是這個棵樹的所有邊權加上最小的點權。我們使用kru skal kruskal kruska l來求,我們每次合併兩個...