日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

POJ 1861 Network

發布時間:2023/12/31 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 POJ 1861 Network 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題意:有n個點,部分點之間可以連接無向邊,每條可以連接的邊都有一個權值。求一種連接方法將這些點連接成一個連通圖,且所有連接了的邊中權值最大的邊權值最小。

解法:水題,直接用Kruskal算法做一遍就行了,不過還是應該仔細想想為什么Kruskal可行。原因是,在從小邊往大邊遍歷的過程中(一直保持圖為連通圖),若判定某邊i必須被連接,則因為圖是連通圖,所以連接比它小的邊不可能使邊i不需要連接,所以,要使邊i不需要連接,必須連接比它大的邊,根據題目要求,還是連接邊i情況更優。

tag:最小生成樹

1 /* 2 * Author: Plumrain 3 * Created Time: 2013-11-24 20:57 4 * File Name: G-POJ-1861.cpp 5 */ 6 #include <iostream> 7 #include <cstdio> 8 #include <cstring> 9 #include <algorithm> 10 #include <vector> 11 12 using namespace std; 13 14 #define CLR(x) memset(x, 0, sizeof(x)) 15 #define PB push_back 16 const int maxm = 15005 * 2; 17 const int maxn = 1005; 18 19 struct pat{ 20 int s, t, l; 21 }; 22 23 pat p[maxm]; 24 bool v[maxm]; 25 vector<int> ans; 26 int n, m, all, f[maxn]; 27 28 bool cmp(pat a, pat b) 29 { 30 return a.l < b.l; 31 } 32 33 void init() 34 { 35 int t1, t2, t3; 36 all = 0; 37 for (int i = 0; i < m; ++ i){ 38 scanf ("%d%d%d", &t1, &t2, &t3); 39 -- t1; -- t2; 40 p[all].s = p[all+1].t = t1; 41 p[all].t = p[all+1].s = t2; 42 p[all++].l = t3; 43 p[all++].l = t3; 44 } 45 } 46 47 void Kruskal() 48 { 49 sort(p, p+all, cmp); 50 for (int i = 0; i < n; ++ i) f[i] = i; 51 CLR (v); 52 for (int i = 0; i < all; ++ i){ 53 int t1 = p[i].s, t2 = p[i].t; 54 while (t1 != f[t1]) t1 = f[t1]; 55 while (t2 != f[t2]) t2 = f[t2]; 56 if (t1 != t2){ 57 v[i] = 1; 58 f[t1] = t2; 59 } 60 } 61 } 62 63 int main() 64 { 65 while (scanf ("%d%d", &n, &m) != EOF){ 66 init(); 67 Kruskal(); 68 69 ans.clear(); 70 int cnt = 0; 71 for (int i = 0; i < all; ++ i) if (v[i]){ 72 cnt = max(i, cnt); 73 ans.PB(i); 74 } 75 int sz = ans.size(); 76 printf ("%d\n%d\n", p[cnt].l, sz); 77 for (int i = 0; i < sz; ++ i) 78 printf ("%d %d\n", p[ans[i]].s+1, p[ans[i]].t+1); 79 } 80 return 0; 81 } View Code

?

轉載于:https://www.cnblogs.com/plumrain/p/POJ_1861.html

總結

以上是生活随笔為你收集整理的POJ 1861 Network的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。