problem 2087 統計樹邊
accept: 197 submit: 571
time limit: 1000 msec memory limit : 32768 kb
problem description
在圖論中,樹:任意兩個頂點間有且只有一條路徑的圖。
生成樹:包含了圖中所有頂點的一種樹。
最小生成樹:對於連通的帶權圖(連通網)g,其生成樹也是帶權的。生成樹t各邊的權值總和稱為該樹的權,權最小的生成樹稱為g的最小生成樹(minimum spanning tree)。最小生成樹可簡記為mst。
但是,對於乙個圖而言,最小生成樹並不是唯一的。
現在,給你乙個連通的有權無向圖,圖中不包含有自環和重邊,你的任務就是尋找出有多少條邊,它至少在乙個最小生成樹里。圖保證連通。
input
輸入資料第一行包含乙個整數t,表示測試資料的組數。對於每組測試資料:
第一行包含兩個整數n,m(1
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define max 100000
struct node
a[max+5];
int father[max+5];
int n,m;
int find(int x)
int cmp(node a,node b)
sort(a,a+m,cmp);
for(int i=1;i<=n;i++)
father[i]=i;
int ans=0;
int i=0;
while(iint j=i;
while(a[j].w==a[j+1].w)
int xx=find(a[j].x);
int yy=find(a[j].y);
if(xx!=yy)
ans++;
j=i;
while(a[j].w==a[j+1].w)
xx=find(a[j].x);
yy=find(a[j].y);
if(xx!=yy)
father[xx]=yy;
i=j+1;
}printf("%d\n",ans);
}return
0;}
FZU 2087 統計樹邊
description 在圖論中,樹 任意兩個頂點間有且只有一條路徑的圖。生成樹 包含了圖中所有頂點的一種樹。最小生成樹 對於連通的帶權圖 連通網 g,其生成樹也是帶權的。生成樹t各邊的權值總和稱為該樹的權,權最小的生成樹稱為g的最小生成樹 minimum spanning tree 最小生成樹可簡...
FZU 2087 統計樹邊
題意 給出乙個有n個點m條邊的圖,沒有重邊和自環,問有多少條邊可以是最少生成樹上的邊 思路 對kruscal不熟悉 沒有想出來,圖上只有2種邊,一種是最少生成樹上的邊,一種不是最少生成樹上的邊,每次貪心的時候有權值相同且不在同乙個集合的邊res 之後將這些邊全放進生成樹的集合裡,最終得到的答案就是所...
FZU 2087 統計樹邊 (最小生成樹變形)
題目鏈結 邊可以分為2類,一類是可以構成mst,另一類是不可以的,用並查集做的時候,檢查權重相同的邊,但是2個端點不在同乙個集合的時候,這個邊就是可以選擇的 include include include include include include using namespace std def...