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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

1021 Deepest Root (25 分) 【难度: 中 / 知识点: 树的直径 连通块】

發布時間:2025/3/20 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1021 Deepest Root (25 分) 【难度: 中 / 知识点: 树的直径 连通块】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


https://pintia.cn/problem-sets/994805342720868352/problems/994805482919673856
方法一:

  • 數組模擬鄰接表
  • 第一步: 爆搜dfs求連通塊
  • 第二步: 暴力枚舉每一個點求其最遠的距離
#include<bits/stdc++.h> using namespace std; const int N=1e5+10; int h[N],e[N],ne[N],idx,n; int st[N],cnt; void add(int a,int b) {e[idx]=b,ne[idx]=h[a],h[a]=idx++; } void dfs(int u)//求連通塊 {st[u]=1;for(int i=h[u];i!=-1;i=ne[i]){int j=e[i]; if(!st[j]) dfs(j);} } int dfs1(int u,int father)// u當前的點 father從哪里來的 {int depth=0;for(int i=h[u];i!=-1;i=ne[i]){int j=e[i];if(j==father) continue;//走回頭路了depth=max(depth,dfs1(j,u)+1); }return depth;//該點的最大深度 } int main(void) {cin>>n;memset(h,-1,sizeof h);for(int i=0;i<n-1;i++){int a,b; cin>>a>>b;add(a,b),add(b,a);}for(int i=1;i<=n;i++) if(!st[i]) dfs(i),cnt++;//求聯通塊的個數if(cnt==1){vector<int>ve;int max_len=0;//最深的深度for(int i=1;i<=n;i++){int len=dfs1(i,-1);if(len>max_len)//有更深的{max_len=len;ve.clear();ve.push_back(i);}else if(len==max_len) ve.push_back(i);//并列}for(int i=0;i<ve.size();i++) cout<<ve[i]<<endl;}else printf("Error: %d components",cnt);return 0; }

方法二:

  • vector存鄰接表
  • 第一步: 并查集求連通塊
  • 第二步: 暴力枚舉每一個點求其最遠的距離
#include<bits/stdc++.h> using namespace std; const int N=1e5+10; vector<int>ve[N]; int p[N],n; int find(int x) {if(x!=p[x]) p[x]=find(p[x]);return p[x]; } int dfs(int u,int father) {int depth=0;for(int i=0;i<ve[u].size();i++){if(ve[u][i]==father) continue;depth=max(depth,dfs(ve[u][i],u)+1);}return depth; } int main(void) {cin>>n; int cnt=n;//初始每一個點都是一個連通塊。for(int i=1;i<=n;i++) p[i]=i;for(int i=0;i<n-1;i++){int a,b; scanf("%d%d",&a,&b);ve[a].push_back(b);ve[b].push_back(a);if(find(a)!=find(b))//合并{p[find(a)]=find(b);cnt--;//合并之后連通塊的數量減一}}if(cnt>1) printf("Error: %d components",cnt);else {vector<int>ans;int max_len=0;for(int i=1;i<=n;i++){int len=dfs(i,-1);if(len>max_len){max_len=len;ans.clear();ans.push_back(i);}else if(len==max_len) ans.push_back(i);}for(int i=0;i<ans.size();i++) printf("%d\n",ans[i]);}return 0; }

時間上的比較: 第一種比第二種快了[100,300]ms 如果第一種也用并查集時間會更快。第二種的vector的時間花費有點大

總結

以上是生活随笔為你收集整理的1021 Deepest Root (25 分) 【难度: 中 / 知识点: 树的直径 连通块】的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 亚洲色中色| 四虎黄色网 | 久久久久久久穴 | 久久久久亚洲精品系列色欲 | www超碰| 拍真实国产伦偷精品 | 爱情岛论坛亚洲线路一 | 日韩少妇一区二区三区 | 久久久精品毛片 | 三上悠亚一区二区在线观看 | 日韩免费影院 | 欧美性色a | 亚洲视频免费看 | 亚洲精品中文在线 | 亚洲激情短视频 | 人人看人人爱 | 熟女肥臀白浆大屁股一区二区 | 免费无码国产精品 | 中文字幕欧美色图 | 日本韩国欧美一区二区 | 欧美另类视频在线观看 | 国产乱码一区二区三区播放 | 欧美成人乱码一区二区三区 | 欧美a在线观看 | 欧美精品久久久久久久自慰 | 91在线免费视频 | juliaann办公室丝袜大战 | 九九热精品视频在线观看 | 国产视频一区二区在线观看 | 最新国产一区 | 在线观看av网站 | 亚洲精品一区二区在线 | 91麻豆国产在线 | 亚洲永久网站 | 久操久| 另类一区二区三区 | www.九色 | 国产探花视频在线观看 | 国产一区二区三区高清视频 | 日韩人妻无码精品久久免费 | 俄罗斯破处| 女人叫床很黄很污句子 | 国内精品久久久 | 韩国三级中文字幕hd久久精品 | 国产亚洲一区二区三区 | 亚洲欧美强伦一区二区 | 国产视频二| 欧美一区二区二区 | 亚洲日本视频在线观看 | 国产成人av无码精品 | 少妇高潮喷水在线观看 | 国产第一页屁屁影院 | 99国产精品久久久 | 欧美久操 | 日韩三级黄 | 人妻射精一区二区 | 色七七网站 | 97影院手机版 | 色婷婷狠狠操 | 99在线看 | 免费毛片观看 | 美女视频一区二区 | av在线中文 | 一区二区三区激情视频 | 欧美亚洲国产日韩 | av夜夜操 | 一区成人 | 国产理论在线观看 | 欧美两根一起进3p做受视频 | 91网站永久免费看nba视频 | 日韩欧美不卡视频 | 国产欧洲亚洲 | 粉嫩欧美一区二区三区 | 欧美日韩中文字幕一区二区三区 | 欧美久久激情 | 91国内精品久久久 | 美女网站在线免费观看 | 亚洲香蕉在线观看 | 久久精品一区二区三区黑人印度 | 国产精品视频h | 中文字幕在线视频一区二区 | 波多野结衣在线免费视频 | 国产毛片电影 | 日韩精品一区二区三区视频在线观看 | 亚洲女人初尝黑人巨大 | 手机看片一区二区三区 | 天天躁日日躁狠狠很躁 | 免费古装一级淫片潘金莲 | 亚洲伊人影院 | 亚洲日本韩国在线 | 中文字幕+乱码+中文乱 | 成年人免费看 | 国产乱淫av麻豆国产 | 亚洲视频手机在线观看 | 亚洲综合五月 | 黄网站色视频免费观看 | 中国av片| 91日韩中文字幕 | av大片免费观看 |