HDU 3367最大生成樹

2021-08-09 05:14:32 字數 579 閱讀 5580

不能直接跑最大生成樹,但是還可以存在乙個環,這樣一下就用krusal判環來寫了就是比普通的最大生成樹多了合併判斷。

****於網路

#include

#include

#include

using

namespace

std;

typedef

struct nn

node;

node edg[100005];

int fath[10005],sum,cycle[10005];//cycle標記樹有沒有環

int cmp(node a,node b)//用於sort排序時的標準

void set_first(int n)//設制初始化

}int find_fath(int x)//找根節點時,路徑壓縮

void kruskal(int n,int m)//n為點數,m為邊數

else

if(cycle[a]==0)//當兩個點都在一棵樹上並且樹還沒有環時,這棵樹添乙個邊構成環

}}int main()

}

hdu 3367 最大生成樹 判環

不能最大生成樹 最大的一條邊,但是為什麼呢?if fx fy 如果兩棵樹上不是都有回環,那麼可以合併,fx掛在fy上,如果其中乙個有環,fy標記為有環 if fx fy circle x circle y 如果兩棵樹上都沒有回環,那麼x和y還能合併,環數變為1 include includeusin...

hdu 3367 偽森林,not 最大生成樹

感覺題意很扭曲。不是求最大生成樹!給乙個圖,求pseudoforest偽森林,要求每個連通分量最多可以有乙個環。求能構成的最大值。錯誤寫法,求出最大生成樹 最大的邊 正確寫法 在求最大生成樹的思路的基礎上每次判斷一下環的問題 6 7 0 1 9 0 2 6 1 2 8 3 4 5 4 5 5 3 5...

hdu3367最大偽森林(並查集)

題目要求乙個連通圖的最大偽森林,偽森林是乙個最多有乙個迴路的圖。我們只要用kruskal最大生成樹的策略就可以,給根節點表上記號表明這棵樹有沒有負環。其實也有一些貪心的思想。如下 1 include2 using namespace std 3 typedef unsigned int ui 4 t...