最小及次小生成樹

2021-08-14 07:13:58 字數 910 閱讀 9842

poj1679 the unique mst

一道裸的次小生成樹

思路就是先求出最小生成樹然後列舉沒有用過的邊減去環中最大的邊求次小生成樹

附**:

#include

#include

#include

#define maxn 105

#define inf 0x3f3f3f3f

using namespace std;

int t,m,n,cnt,x,y,z,vis[maxn],dis[maxn],pre[maxn],head[maxn],mc[maxn][maxn],w[maxn][maxn];

bool used[maxn][maxn];

int prim(int s) 

dis[s]=0;

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

if(tar==-1) break;

res+=mn;

vis[tar]=1;

used[tar][pre[tar]]=used[pre[tar]][tar]=1;//邊已經是最小生成樹里的了 

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

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

return res;

}int exprim(int n,int mins)

}if(ans==inf) return -1;

return ans;

}void judge(int n)//判斷是否唯一 

if(exprim(n,ans)==ans)

else printf("%d\n",ans);

}int main()

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

judge(n);

}return 0;

}

最小生成樹 次小生成樹

一 最小生成樹 說到生成樹首先要解釋一下樹,樹是乙個聯通的無向無環圖,多棵樹的集合則被稱為森林。因此,樹具有許多性質 1.兩點之間的路徑是唯一的。2.邊數等於點數減一。3.連線任意兩點都會生成乙個環。對於乙個無向聯通圖g的子圖,如果它包含g的所有點,則它被稱為g的生成樹,而各邊權和最小的生成樹則被稱...

次最小生成樹

最小生成數 常用的演算法有倆中prim和kruskal prim演算法簡介 這裡我用到的是 用prim演算法解決的 include include include include define inf 0x3f3f3f3f using namespace std int v,e int s 1005...

最小生成樹 次小生成樹 模板

次小生成樹我的理解 在最小生成樹的基礎上,列舉不再最小生陳樹上的邊,然後成環,取出一條除了新加入的那條邊外的最長邊,最終的權值即為次小生成樹的權值。小結論 當次小生成樹的權值與最小生成樹的權值相同時,最小生成樹不唯一。include include include includeusing name...