研究了一天最小生成樹 ,衍生出來包括最小瓶頸樹,次小生成樹,最小樹形圖之類的演算法,前兩者基本能搞定,最後那個就。。不太懂了日後再回去看吧似乎很少用到,抄個模板以備不時之需 先談談最小瓶頸樹 首先注意這兩個定理:
命題:無向圖的最小生成樹一定是瓶頸生成樹。
命題:瓶頸生成樹不一定是最小生成樹
好了 知道這個之後無向圖的瓶頸生成樹就搞定了 貼上一道例題 :
time limit: 10 sec memory limit: 128 mb
submit: 693 solved: 463
[submit][status][discuss]
在乙個熱帶雨林中生存著一群猴子,它們以樹上的果子為生。昨天下了一場大雨,現在雨過天晴,但整個雨林的地表還是被大水淹沒著,部分植物的樹冠露在水面上。猴子不會游泳,但跳躍能力比較強,它們仍然可以在露出水面的不同樹冠上來回穿梭,以找到喜歡吃的果實。
現在,在這個地區露出水面的有n棵樹,假設每棵樹本身的直徑都很小,可以忽略不計。我們在這塊區域上建立直角座標系,則每一棵樹的位置由其所對應的座標表示(任意兩棵樹的座標都不相同)。
在這個地區住著的猴子有m個,下雨時,它們都躲到了茂密高大的樹冠中,沒有被大水沖走。由於各個猴子的年齡不同、身體素質不同,它們跳躍的能力不同。有的猴子跳躍的距離比較遠(當然也可以跳到較近的樹上),而有些猴子跳躍的距離就比較近。這些猴子非常聰明,它們通過目測就可以準確地判斷出自己能否跳到對面的樹上。
【問題】 現已知猴子的數量及每乙個猴子的最大跳躍距離,還知道露出水面的每一棵樹的座標,你的任務是統計有多少個猴子可以在這個地區露出水面的所有樹冠上覓食。
第1行為乙個整數,表示猴子的個數m(2<=m<=500);
第2行為m個整數,依次表示猴子的最大跳躍距離(每個整數值在1--1000之間);
第3行為乙個整數表示樹的總棵數n(2<=n<=1000);
第4行至第n+3行為n棵樹的座標(橫縱座標均為整數,範圍為:-1000--1000)。
(同一行的整數間用空格分開)
包括乙個整數,表示可以在這個地區的所有樹冠上覓食的猴子數
41 2 3 4
6 0 0
1 01 2
-1 -1
-2 0
2 2
3 赤裸裸的瓶頸生成樹問題 模板題 貼個題解:
#include#include#include#include#includeusing namespace std;
struct ss
q[1010000];
int f[1001],v[1001],x[1001],y[1001];
int m,n,len;
inline int read()
while (y>='0' && y<='9')
return x*f;
}double pow(int x1,int y1,int x2,int y2)
bool cmp(ss xx,ss yy)
然後就是次小生成樹 思路大概是:
先求出最小生成樹,並記錄下該最小生成樹上的所有邊!然後列舉該生成樹的所有邊刪掉,如果仍能形成生成樹,則max一下 最後得到的值就是次小生成樹啦 **如下:
#include #include #include #include #include using namespace std;
const int vn = 5e2+10;
const int en = 2e5+10;
int v,e,f[vn],p[vn];
struct edgeedge[en];
bool cmp(edge a,edge b)
void setfather()
int kruskal()
if(vertex == v-1)break;
}return ans;
}int skruskal(int del)
if(vertex == v-1)break;
}if(vertex < v-1) ans = -1;
return ans;
}int main()
cout《貼個別人的模板吧 感謝分享:
int zledmonds(int n,int map[maxn][maxn])
{ bool visited[maxn],flag[[maxn];
int pre[maxn];
int sum=0,i,j,k;
for( i=0; i
最小生成樹總結
給定一張圖,圖中有許多的節點還有許多長度不同的邊將這些點點相互連線,找出連線所有點的最短方式就是最小生成樹,可以證明,這樣一種最小的情況是不會出現環的,由於所有的無環圖都可以看做樹,所以成為最小生成樹。頂層思想是分治,選擇策略是貪心,實現方法如下 以邊為中心,先將所有的邊從小到大進行排序,之後依照大...
最小生成樹總結
啊,先紀念一下吧,難得一天這麼 666 ac 完了所有題 次小生成樹 看懂 今天學到了最小生成樹演算法中的 prim 演算法和kruskal 演算法。從巨集觀上來講 prim 更適合稠密圖,krustal 更適合稀疏圖,但對於我們來說暫時沒有什麼區別啦。prim 演算法中主要注意的點是 在visit...
最小生成樹總結
最小生成樹的性質 1 最小生成樹並不唯一,準確的來說是最小生成樹的樹形並不唯一 2 最小生成樹的權值之和唯一,並且是最小的 3 最小生成樹的邊數 頂點數 1 求最小生成樹有兩種經典演算法 普里姆演算法 prim 和克魯斯卡爾 kruskal 演算法 演算法比較 時間複雜度比較 prim在稠密圖中比k...