Constructing Roads最小生成樹

2021-10-02 07:53:30 字數 2605 閱讀 8382

constructing roads

原題鏈結

題目給出所有路的關係,以及已經被修好的路,求修剩下的路的最小值。

地圖已經給出 直接讀取就好,在讀取已經修好的路的時候,將已經修好的路的權值改為0即可,正常進行計算,

prim:

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

const

int inf =

0x3f3f3f3f

;long

long map[

305]

[305];

long

long dis[

300005];

bool vis[

300005];

long

long ans;

long

long n;

void

prim()

vis[1]

=true

;for

(i =

0; i < n -

1; i++)}

// cout << "***" << endl;

// for (j = 1; j <= n; j++)

//

// cout << endl;

if(minn == inf)

ans +

= minn;

vis[p]

=true

;for

(j =

1; j <= n; j++)}

}return;}

intmain()

}for

(i =

1; i <= n; i++)}

}long

long m;

scanf

("%lld"

,&m)

;while

(m--

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

// // cout << endl;

// }

prim()

; cout << ans << endl;

return0;

}

kruskal:

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

long

long pre[

300005];

long

long map[

3005][

3005];

struct node

stu[

300005];

long

long ans;

long

long cnt;

bool

cmp(node x, node y)

long

long

find

(long

long x)

return pre[x]

=find

(pre[x]);

}void

join

(long

long x,

long

long y,

long

long w)

}int

main()

for(i =

1; i <= n; i++)}

long

long t, a, b;

scanf

("%lld"

,&t)

;while

(t--

)//將已經修好的路長度清零,直接連線起來。

long

long k =0;

for(i =

1; i <= n; i++)}

sort

(stu, stu + k, cmp)

;/* for (i = 0; i < k; i++)

for (i = 0; i <= n;i++)

cout << endl;*/

for(i =

0; i < k; i++)}

if(cnt >1)

cout << ans << endl;

return0;

}

最小生成樹

package 圖 最小生成樹是用最少的邊吧把所有的節點連線起來。於是和圖的深度優先搜素差不多。class stack public void push int key public int pop 檢視棧頂的元素 public int peek public boolean isempty cla...

最小生成樹

define max vertex num 20 最大頂點數 typedef int adjmatrix max vertex num max vertex num 鄰接矩陣型別 typedef char vertextype typedef struct mgraph struct dnodecl...

最小生成樹

在乙個具有幾個頂點的連通圖g中,如果存在子圖g 包含g中所有頂點和一部分邊,且不形成迴路,則稱g 為圖g的生成樹,代價最小生成樹則稱為最小生成樹。最小生成樹的特點 1 mst性質 最小生成樹性質 設g v,e 是乙個連通網路,u是頂點集v的乙個真子集。若 u,v 是g中一條 乙個端點在u中 例如 u...