水題。。。
題目大意:
用乙個7位的字串代表乙個編號,兩個編號之間的distance代表這兩個編號之間不同字母的個數。乙個編號只能由另乙個編號「衍生」出來,代價是這兩個編號之間相應的distance,現在要找出乙個「衍生」方案,使得總代價最小,也就是distance之和最小。
很容易想到,將每兩個頂點間的distance求出作為邊權,將題目轉化為最小生成樹問題。由於是稠密圖,所以用prim演算法。
**:
#include#include#include
using
namespace
std;
int i,j,k,n,m,x,a[2001][2001],ans,minn,d[2001],tot,c[2001
];bool b[2001
];char s[2001][7
];int
main()
c[1]=1;d[1]=0;k=1;b[1]=1
;
while(tot}
b[x]=1
; c[++tot]=x;
ans+=d[x];
d[x]=0
; k++;
}printf(
"the highest possible quality is 1/%d.\n
",ans);
scanf("%d
",&n);
}return0;
}
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...
POJ 1789最小生成樹(kruscal演算法)
這題其實是密的,比較適合用prim演算法,但是我現在想練習一下自己的並查集運用,所以只用了kruscal演算法 題意就是字串中,串與串比較,其中一串是拿來做參考,其他如果其中的字元改變最小,就是最佳的 就是 繼承 比如 4 aaaaaaa baaaaaa abaaaaa aabaaaa第一行作為參考...