FZU 2087 統計樹邊

2021-07-10 06:37:40 字數 1150 閱讀 7944

description

在圖論中,樹:任意兩個頂點間有且只有一條路徑的圖。

生成樹:包含了圖中所有頂點的一種樹。

最小生成樹:對於連通的帶權圖(連通網)g,其生成樹也是帶權的。生成樹t各邊的權值總和稱為該樹的權,權最小的生成樹稱為g的最小生成樹(minimum spanning tree)。最小生成樹可簡記為mst。

但是,對於乙個圖而言,最小生成樹並不是唯一的。

現在,給你乙個連通的有權無向圖,圖中不包含有自環和重邊,你的任務就是尋找出有多少條邊,它至少在乙個最小生成樹里。圖保證連通。

input

輸入資料第一行包含乙個整數t,表示測試資料的組數。對於每組測試資料:

第一行包含兩個整數n,m(1output

對於每組測試資料,輸出一行,包含乙個整數,表示滿足條件的邊的個數。

sample input1

4 5

1 2 101

1 3 100

2 3 2

2 4 2

3 4 1

sample output

4統計有多少條邊可以在最小生成樹上,對於一棵最小生成樹來說,加入一條邊會成環,

只有當加入的邊等於環上除該邊以外的最小邊的時候,那麼這條邊也可以是最小生成

樹上的邊,也就是說,如果這條邊可以是最小生成樹上的邊的話,那麼圖的最小生成

樹上加入這條邊生成的環上一定最少有一條等於這個邊。

那麼在生成最小生成樹的時候,我們對於權值相同的邊一起處理,如果這條邊可以加

入那麼一定是最小生成樹上的邊,不能加入一定不是最小生成樹上的邊。

#include#include#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

const int maxn=5e2+10;

int t,n,m,x,y,z;

int fa[maxn*200];

struct point

};vectorf[maxn];

int get(int x)

int main()

{ scanf("%d",&t);

while(t--)

{ for (int i=1;i

FZU 2087 統計樹邊

problem 2087 統計樹邊 accept 197 submit 571 time limit 1000 msec memory limit 32768 kb problem description 在圖論中,樹 任意兩個頂點間有且只有一條路徑的圖。生成樹 包含了圖中所有頂點的一種樹。最小生成...

FZU 2087 統計樹邊

題意 給出乙個有n個點m條邊的圖,沒有重邊和自環,問有多少條邊可以是最少生成樹上的邊 思路 對kruscal不熟悉 沒有想出來,圖上只有2種邊,一種是最少生成樹上的邊,一種不是最少生成樹上的邊,每次貪心的時候有權值相同且不在同乙個集合的邊res 之後將這些邊全放進生成樹的集合裡,最終得到的答案就是所...

FZU 2087 統計樹邊 (最小生成樹變形)

題目鏈結 邊可以分為2類,一類是可以構成mst,另一類是不可以的,用並查集做的時候,檢查權重相同的邊,但是2個端點不在同乙個集合的時候,這個邊就是可以選擇的 include include include include include include using namespace std def...