TYVJ 1307 聯絡員(最小生成樹)

2022-05-12 02:43:49 字數 1656 閱讀 1979

kruskal裸題。(水題紅色警報)

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

#define rep(i, n) for(int i=0; i

#define for1(i,a,n) for(int i=(a);i<=(n);++i)

#define for2(i,a,n) for(int i=(a);i

#define for3(i,a,n) for(int i=(a);i>=(n);--i)

#define for4(i,a,n) for(int i=(a);i>(n);--i)

#define cc(i,a) memset(i,a,sizeof(i))

#define max(a,b) ((a)>(b)?(a):(b))

#define min(a,b) ((a)

#define read(a) a=getnum()

#define print(a) printf("%d", a)

inline int getnum()

struct edge {

int u, v, w;

bool operator < (const edge &a) const { return w描述 description

tyvj已經一歲了,**也由最初的幾個使用者增加到了上萬個使用者,隨著tyvj**的逐步壯大,管理員的數目也越來越多,現在你身為tyvj管理層的聯絡 員,希望你找到一些通訊渠道,使得管理員兩兩都可以聯絡(直接或者是間接都可以)。tyvj是乙個公益性的**,沒有過多的利潤,所以你要盡可能的使費用 少才可以。

目前你已經知道,tyvj的通訊渠道分為兩大類,一類是必選通訊渠道,無論**多少,你都需要把所有的都選擇上;還有一類是選擇性的通訊渠道,你可以從中挑選一些作為最終管理員聯絡的通訊渠道。資料保證給出的通行渠道可以讓所有的管理員聯通。

輸入格式 inputformat

第一行n,m表示tyvj一共有n個管理員,有m個通訊渠道

第二行到m+1行,每行四個非負整數,p,u,v,w 當p=1時,表示這個通訊渠道為必選通訊渠道;當p=2時,表示這個通訊渠道為選擇性通訊渠道;u,v,w表示本條資訊描述的是u,v管理員之間的通訊渠道,u可以收到v的資訊,v也可以收到u的資訊,w表示費用。

輸出格式 outputformat

最小的通訊費用

樣例輸入 sampleinput [複製資料]

5 61 1 2 1

1 2 3 1

1 3 4 1

1 4 1 1

2 2 5 10

2 2 5 5

樣例輸出 sampleoutput [複製資料]

9

資料範圍和注釋 hint

樣例解釋:

1-2-3-4-1存在四個必選渠道,形成乙個環,互相可以到達。需要讓所有管理員聯通,需要聯通2和5號管理員,選擇費用為5的渠道,所以總的費用為9

注意:u,v之間可能存在多條通訊渠道,你的程式應該累加所有u,v之間的必選通行渠道

資料範圍:

對於30%的資料,n<=10   m<=100

對於50%的資料, n<=200  m<=1000 

對於100%的資料,n<=2000  m<=10000

tyvj 叢林探險

東非大裂谷中有一片神秘的叢林,是全世界探險家的樂園,著名黃 探險家bb一直想去試試。正好我國科學家2005年4月將首次對東非大裂谷進行科考,bb決定隨科考隊去神秘叢林探險。在出發之前,他蒐集了國內外有關神秘叢林探險的資料,並繪製成一張地圖 該地圖上有若干安全點 包括入口點和出口點 並將這些安全點編號...

練習1 23 練習1 30

1.練習1.23 改後的 如下 define find divisor better n a cond square a n n divides?better n a a else find divisor better n next 2 a define next 2 n if 2 n 1 n 2...

Tyvj 模擬賽 運

zhx和妹子們玩數數遊戲。僅包含4或7的數被稱為幸運數。乙個序列的子串行被定義為從序列中刪去若干個數,剩下的數組成的新序列。兩個子串行被定義為不同的當且僅當其中的元素在原始序列中的下標的集合不相等。對於乙個長度為n的序列,共有2n個不同的子串行。包含乙個空序列 乙個子串行被稱為不幸運的,當且僅當其中...