poj 1789 最小生成樹 kruskal實現

2021-06-29 16:36:09 字數 831 閱讀 6235

1y題目大意:對於每乙個點給你乙個字串,兩個點之間的距離就是兩個點所對應的字串對應位置有幾個不同的字元。。找出最小生成樹。

把kruskal換成了用乙個struct來記錄邊的兩個點,以及這條邊的距離。這樣就不需要多開乙個陣列。。。

之後用乙個結構體排序,讓長度最小的邊排到最前面。。

**:

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

#define m 2009

struct node //用乙個struct來記錄每條邊的資訊

line[m*m/2];

char s[m][10];

int p[m]; //記錄每個點的父節點

int n;

int ans;

int num;

int cmp(node a,node b)

int find(int x)

void kruskal()

}}int main()

num = 0;

for(int i = 1;i <= n;i++)

for(int j = i+1;j <= n;j++)

line[num].u = i;

line[num].v = j;

line[num++].w = temp;

}sort(line,line+num,cmp);

kruskal();

printf("the highest possible quality is 1/%d.\n",ans);

}return 0;

}

poj 1789 最小生成樹)

題意 給出n個卡車,每個卡車的型別是七個字元組成的,一種卡車可以從另一種卡車派生來的,代價是兩種卡車間型別不同字元的個數,求出這n中卡車派生的最小代價,n種車有一 種是開始就有的,n 1種是派生出來的。思路 因為剛開始有一種卡車,所以就是加n 1條把所有車連起來,就是最小生成樹了。include i...

POJ 1789 最小生成樹 Prim

題目描述 給予n個長度為7的字串,定義兩字串間的代價為同一位置不同的字元的個數,現在要聯通所有的字串求最小代價。思路 一開始使用krustal演算法,然而因為是稠密圖導致tle,換用prim。krustal tle include include include include define n 2...

poj1789 最小生成樹 prim

水題。題目大意 用乙個7位的字串代表乙個編號,兩個編號之間的distance代表這兩個編號之間不同字母的個數。乙個編號只能由另乙個編號 衍生 出來,代價是這兩個編號之間相應的distance,現在要找出乙個 衍生 方案,使得總代價最小,也就是distance之和最小。很容易想到,將每兩個頂點間的di...