hdu 1863 最小生成樹

2021-06-07 04:59:35 字數 516 閱讀 3771

使用並查集,陣列不要太小

#include "stdio.h"

int set[200];

int n, m;

typedef struct _nodenode, *pnode;

node road[200];

void init()

int find(int u)

return set[u];

}int join(int u, int v)

void sort()

road[j+1] = t; }}

void main()

sort();

sum = 0;

for(i=0; ik = find(1);

for(i=2; i<=m; i++)

if(i==m+1)

printf("%d", sum);

else

printf("?");

printf("\n");

}}

hdu 1863(最小生成樹)

基礎的最小生成樹問題,不過 要特判條件不足的情況 include include define inf 1 30 int n,m,vis 110 low 110 int map 110 110 int init int prim if pos 1 return 1 代表這當前步驟缺少條件 int k...

HDU 1863 最小生成樹

這還是最小生成樹的模版題,以前都是用的kruskal做的,這次用prime做的,寫篇部落格記錄下。prime的複雜度為n 2 n為點的個數 與邊的個數無關,用於稠密圖,而kruskal的複雜度為mlgm m為邊的個數 與點的個數無關,主要用於稀疏圖。include include includeus...

hdu 1863 最小生成樹

還是最小生成樹,還是用了kruskal寫,就是有點不一樣的地方在於,他要讓你判斷是否能夠保證暢通,也就是是否能有最小生成樹,其實就是判斷是不是連通圖吧,因為連通圖一定會有最小生成樹。一開始我的想法是,先進行一次並查集的合併與查詢,看一下有幾個集合,如果只有乙個集合的話就是連通圖,肯定有最小生成樹存在...