題目描述:給予n個長度為7的字串,定義兩字串間的代價為同一位置不同的字元的個數,現在要聯通所有的字串求最小代價。
思路:一開始使用krustal演算法,然而因為是稠密圖導致tle,換用prim。
krustal:(tle)
#include #include#include
#include
#define n 2005
using
namespace
std;
struct
e e(
int a,int b,int
c):fi(a),sec(b),val(c){}
bool
operator
<(const e&x)const
};class
graph
return
cnt;
}int find(int
x)
bool union(int a,int
b)
else
return
false
; }
public
:
intinit()
return
n; }
void
build()}}
intget_ans()
}return
ans;
}};graph ss;
intmain()
}
prim(ac):
#include #include#include
#include
#include
#define n 2005
using
namespace
std;
class
graph
return
cnt;
}public
:
intinit()
return
n; }
void
build()}}
intget_ans()
if(!mark)break
; inset[mark] = true
; ans+=dis[mark];
for(int j = 1 ; j <= n ; ++j)}}
return
ans;
}};graph ss;
intmain()}//
在稠密圖中比較實用,每次找出距離最小的點加入集合,然後更新剩下不在集合中的點的最小距離(只用以新加入的點做參考)
//
poj 1789 最小生成樹)
題意 給出n個卡車,每個卡車的型別是七個字元組成的,一種卡車可以從另一種卡車派生來的,代價是兩種卡車間型別不同字元的個數,求出這n中卡車派生的最小代價,n種車有一 種是開始就有的,n 1種是派生出來的。思路 因為剛開始有一種卡車,所以就是加n 1條把所有車連起來,就是最小生成樹了。include i...
poj1789 最小生成樹 prim
水題。題目大意 用乙個7位的字串代表乙個編號,兩個編號之間的distance代表這兩個編號之間不同字母的個數。乙個編號只能由另乙個編號 衍生 出來,代價是這兩個編號之間相應的distance,現在要找出乙個 衍生 方案,使得總代價最小,也就是distance之和最小。很容易想到,將每兩個頂點間的di...
POJ 1789最小生成樹(kruscal演算法)
這題其實是密的,比較適合用prim演算法,但是我現在想練習一下自己的並查集運用,所以只用了kruscal演算法 題意就是字串中,串與串比較,其中一串是拿來做參考,其他如果其中的字元改變最小,就是最佳的 就是 繼承 比如 4 aaaaaaa baaaaaa abaaaaa aabaaaa第一行作為參考...