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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

201503-4 网络延时 (本质是求树的最长路径)

發布時間:2025/4/5 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 201503-4 网络延时 (本质是求树的最长路径) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

樹的最長路徑

      • 題目:
      • 思路:
      • 求解方法:
      • 動態規劃三部曲
        • 1)狀態定義
        • 2)狀態轉移方程
      • (1)ACWing上的問題
      • (2) POJ上的問題
      • (3) CCF-CSP上的問題

參考博文:
<1>poj總結鏈接
<2> acwing 代碼鏈接
<3> 數學證明

相關題目鏈接
ACWing
POJ:
CCF-CSP:

題目:

對于一顆n個結點的無根樹,找到一條最長路徑。(找到兩個距離最遠的點)

思路:

(樹的重心問題)
先將無根樹轉換成有根樹,即隨意找一點i作為根節點,經過i的最長路就連接著兩顆不同子樹u和v的最深葉子節點的路徑。

求解方法:

任意找一點i為根節點,找到距離該結點最遠距離的點u。
再從u出發,尋找離u最遠的節點v。u到v的距離即為樹的最長路徑。

動態規劃三部曲

1)狀態定義

dp[i] 表示以i為根節點的子樹到葉節點的最大距離

2)狀態轉移方程

邊權為1時:
dp[i] = max{dp[j] + 1}
邊權不為1時:
dp[i] = max{dp[j] + w(i)}

(1)ACWing上的問題

類型:有邊權

#include <iostream> #include <cstring> #include <vector> using namespace std;const int N = 10010; int n; int ans; struct Node {int v, dis;Node(int _v, int _dis) {v = _v;dis = _dis;} }; vector<Node> Adj[N]; int dfs(int u, int father) {//根據貪心理論,以u為根的最長路徑必然由經過不同的子樹的最長和次長int d1 = 0, d2 = 0;for (int i = 0; i < Adj[u].size(); i++) {int v = Adj[u][i].v;int dis = Adj[u][i].dis;if (v == father)continue;int d = dfs(v, u) + dis; //u->v之前的距離//dist = max(dist, d);if (d >= d1) {d2 = d1;d1 = d;} else if (d > d2) {d2 = d;}}ans = max(ans, d1 + d2);//cout << d1 << endl;return d1; }int main() {cin >> n;int a, b, c;for (int i = 0; i < n - 1; i++) {cin >> a >> b >> c;Adj[a].push_back(Node(b, c));Adj[b].push_back(Node(a, c));}dfs(1, -1);cout << ans << endl;return 0; }

(2) POJ上的問題

類型:有邊權

#include <iostream> #include <cstdlib> #include <cstring> #include <vector> using namespace std; const int N = 10010; int n, m;struct Node {int v, dis;Node(int _v, int _dis) {v = _v;dis = _dis;} }; vector<Node> Adj[N]; int dis[N]; int vis[N];void dfs(int u, int t) {dis[u] = t;for (int i = 0; i < Adj[u].size(); i++) {int v = Adj[u][i].v;if (vis[v] == false) {vis[v] = true;dfs(v, t + Adj[u][i].dis);}} }int main() {int u, v, w;int maxn = 0;while (cin >> u >> v >> w) {Adj[u].push_back(Node(v, w));Adj[v].push_back(Node(u, w));if (u > v) {maxn = max(maxn, u);} else {maxn = max(v, maxn);}}//cout << maxn << endl;memset(dis, 0, sizeof dis);fill(vis, vis + N, false);dfs(1, 0);int start = 0;int maxdis = 0;for (int i = 0; i <= maxn; i++) {if (dis[i] > maxdis) {start = i;maxdis = dis[i];}}memset(dis, 0, sizeof dis);fill(vis, vis + N, false);dfs(start, 0);maxdis = 0;for (int i = 0; i <= maxn; i++) {if (dis[i] > maxdis) {start = i;maxdis = dis[i];}}cout << maxdis << endl;return 0; }

(3) CCF-CSP上的問題

類型:無邊權

#include <iostream> #include <vector> #include <cstring> #include <algorithm> using namespace std; const int N = 20010; int dis[N]; // 用于存儲最遠距離 bool vis[N]; int n, m; vector<int> Adj[N];void dfs(int start, int t) {dis[start] = t;for (int i = 0; i < Adj[start].size(); i++) {if (vis[Adj[start][i]] == false) {vis[Adj[start][i]] = true;dfs(Adj[start][i], t + 1);}} }int main() {cin >> n >> m;int a;for (int i = 2; i <= n; i++) {cin >> a;Adj[i].push_back(a);Adj[a].push_back(i);}for (int i = n + 1; i <= n + m; i++) {cin >> a;Adj[a].push_back(i);Adj[i].push_back(a);}memset(dis, 0, sizeof dis);fill(vis, vis + N, false);int start = 0;int maxdis = 0;//尋找最遠點udfs(1, 0);for (int i = 1; i <= n + m; i++) {if (dis[i] > maxdis) {start = i;maxdis = dis[i];}}maxdis = 0;memset(dis, 0, sizeof dis);fill(vis, vis + N, false);dfs(start, 0);for (int i = 1; i <= n + m; i++) {if (dis[i] > maxdis) {maxdis = dis[i];}}cout << maxdis << endl;return 0; }

總結

以上是生活随笔為你收集整理的201503-4 网络延时 (本质是求树的最长路径)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 日韩操操操 | 日韩欧美一区二区三区免费观看 | 超碰国产一区二区三区 | 四虎在线免费播放 | 国产成人免费电影 | 激情狠狠| 亚洲free性xxxx护士hd | 春宵av| 久久av一区二区三区亚洲 | 99热这里只有精品99 | 欧美激情精品久久久久 | 日美女网站 | 天天干天天插 | 天堂影院av| 成人黄色a级片 | 亚洲一区二区天堂 | 小泽玛利亚一区二区三区 | 国产在线观看精品 | www国产精品视频 | 三级电影在线看 | 操在线视频| 欧美色鬼| 91在线一区二区三区 | 欧美视频第一区 | 色悠久| 一级片在线免费 | 女人色极品影院 | 成人黄色免费在线观看 | 黄色av网站在线播放 | 裸体按摩www性xxxcom | 一个人在线观看www www.97色 | 日本黄色三级网站 | 99精品偷自拍 | 精品 | 黄色片免费 | 日韩欧美国产精品综合嫩v 国产小毛片 | 在线观看亚洲国产 | 激情六月天 | 北京富婆泄欲对白 | 天堂视频一区 | 久久综合激的五月天 | 国产传媒第一页 | 高潮疯狂过瘾粗话对白 | 亚洲精品一区二区三区精华液 | 一区二区三区色 | 国产精品11 | 在线观看av中文字幕 | 欧美成年人视频在线观看 | 中国毛片在线 | 黄网在线观看免费 | 久久免费视频网 | 国产三级一区二区三区 | 日韩成人在线免费观看 | 日本少妇全体裸体洗澡 | 国产精品日本一区二区在线播放 | 久久久久不卡 | 在线免费观看av网址 | 国产又粗又猛 | 亚洲视频免费播放 | 亚洲一区二区欧美 | 色丁香婷婷综合久久 | 亚洲在线看片 | 极品丰满少妇 | 日本综合久久 | 欧美日韩一区二区电影 | 99精品中文字幕 | 色精品视频 | 欧美一级日韩一级 | 亚洲自拍激情 | 欧美性猛片aaaaaaa做受 | 丝袜ol美脚秘书在线播放 | 日日爽视频 | 久久久久欧美 | 粉嫩av一区二区三区 | 久久久久人妻一道无码AV | 四虎伊人| 蜜臂av | 97久久精品视频 | 欧美精品免费在线 | 久久久久久久偷拍 | 女人脱裤子让男人捅 | 国产精品99久久久久久久久 | 好吊妞视频这里只有精品 | 尤物视频最新网址 | www.桃色av嫩草.com | 少妇无内裤下蹲露大唇视频 | 精品成人国产 | 麻豆成人入口 | 男男受被啪到高潮自述 | 淫久久 | 国产成人欧美一区二区三区91 | 精品一区二区三区无码视频 | 一级性生活黄色片 | 国产av人人夜夜澡人人爽麻豆 | 亚洲色域网 | www.av天天 | 欧美在线激情 | 色网站免费在线观看 | a免费视频|