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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

洛谷1967货车运输

發布時間:2025/3/14 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 洛谷1967货车运输 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目:https://www.luogu.org/problemnew/show/P1967

倍增LCA裸題。用了在線。還有離線O(n)做法、樹鏈剖分做法,暫不管了。

(自己程序的)坑點:1.xnt從1開始!2.數組大小!!!

重邊在最大生成樹的時候就解決啦~

  不然我就要進了子節點的dfs以后遍歷一遍它的邊,從與fa相連者中找出最大的作為mn[ ][0]的值;用vis標記使fa再走到自己時不進dfs了。

值得注意的地方是它可能是一個森林。

#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define ll long long using namespace std; const int N=1e5+5,M=5e5+5,lm=17;const ll INF=0x7fffffff; int n,m,head[N],xnt=1,dep[N],pre[N][lm+5],q; ll mn[N][lm+5],fa[N]; bool use[M<<1],in[N]; struct Edge{int next,from,to,bh;ll w;Edge(int n=0,int f=0,int t=0,int b=0,ll w=0):next(n),from(f),to(t),bh(b),w(w) {} }edge[M<<1],tp[N<<1]; bool cmp(Edge a,Edge b){return a.w>b.w;} int find(int a) {if(fa[a]==a)return a;return fa[a]=find(fa[a]); } void kruskal() {memcpy(tp,edge,sizeof tp);sort(tp+1,tp+xnt+1,cmp);for(int i=1,u,v,k;i<=xnt;i++)if(find(u=tp[i].from)!=find(v=tp[i].to))fa[find(u)]=find(v),use[k=tp[i].bh]=use[k^1]=1; } void dfs(int cur,int fa) {pre[cur][0]=fa;dep[cur]=dep[fa]+1;for(int i=1;i<=lm;i++){int k=pre[cur][i-1];//不是i>>1 if(!pre[k][i-1])break;pre[cur][i]=pre[k][i-1];mn[cur][i]=min(mn[cur][i-1],mn[k][i-1]);//不用賦初值了 }for(int i=head[cur],v;i;i=edge[i].next)if(use[i]&&(v=edge[i].to)!=fa)mn[v][0]=edge[i].w,dfs(v,cur); } ll lca(int x,int y) {ll ans=INF;if(dep[x]<dep[y])swap(x,y);int d=dep[x]-dep[y];for(int i=lm;i>=0;i--)// if(d&(1<<i)){ans=min(ans,mn[x][i]);x=pre[x][i];}if(x==y)return ans;// for(int i=lm;i>=0;i--)if(pre[x][i]!=pre[y][i]){ans=min(ans,min(mn[x][i],mn[y][i]));x=pre[x][i];y=pre[y][i];}return min(ans,min(mn[x][0],mn[y][0])); } int main() {scanf("%d%d",&n,&m);int x,y;ll z;for(int i=1;i<=n;i++)fa[i]=i;for(int i=1;i<=m;i++){scanf("%d%d%lld",&x,&y,&z);edge[++xnt]=Edge(head[x],x,y,xnt,z);head[x]=xnt;edge[++xnt]=Edge(head[y],y,x,xnt,z);head[y]=xnt;}kruskal();for(int i=1;i<=n;i++)if(fa[i]==i)dfs(i,0);//森林 // for(int j=1;j<=lm;j++) // for(int i=1;i<=n;i++) // { // mn[i][j]=min(mn[pre[i][j-1]][j-1],mn[i][j-1]); // pre[i][j]=pre[pre[i][j-1]][j-1]; // }scanf("%d",&q);for(int i=1;i<=q;i++){scanf("%d%d",&x,&y);if(find(x)!=find(y))printf("-1\n");else printf("%lld\n",lca(x,y));} }

?

轉載于:https://www.cnblogs.com/Narh/p/8886782.html

總結

以上是生活随笔為你收集整理的洛谷1967货车运输的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 欧美丰满一区二区免费视频 | 在线视频 亚洲 | 国产精品扒开腿做爽爽爽男男 | 欧美老熟妇乱大交xxxxx | 久久人人艹 | 午夜视频大全 | 91国产免费观看 | 国产男女爽爽爽 | 熟女人妻一区二区三区免费看 | 肉丝超薄少妇一区二区三区 | 黑人爱爱视频 | 在线观看欧美视频 | 国产精品夜夜 | 91影院在线观看 | 国产精品主播视频 | 三级网站在线播放 | 欧美午夜一区二区三区 | 97国产在线观看 | 免费在线小视频 | 国产精品夜夜躁视频 | 婷婷色中文网 | 精品国产综合区久久久久久 | 污污在线看 | 国产av日韩一区二区三区精品 | 一区二区三区国产精品视频 | 天天添| 日韩在线不卡 | 美女啪啪国产 | 在线成人播放 | 日韩久久久久久久 | 日韩成人免费在线视频 | 97精品国产97久久久久久粉红 | 久久伊人精品 | 欧美专区在线视频 | 亚洲激情在线视频 | 波多野结衣先锋影音 | 精品一区二区毛片 | 男人的天堂成人 | 一个人在线观看免费视频www | 成人福利在线免费观看 | 偷拍欧美亚洲 | 亚洲av成人无码久久精品 | 国产三级中文字幕 | 绿帽人妻精品一区二区 | a天堂亚洲 | 国产欧美日韩视频在线观看 | 青青草免费在线观看视频 | 国产精品av在线 | 琪琪电影午夜理论片八戒八戒 | 偷拍自拍一区 | 萌白酱一区二区 | 丁香花婷婷 | 中文字幕人妻丝袜乱一区三区 | kendra lust free xxx | 欧美狠狠爱 | 国产成人午夜视频 | 久久综合亚洲 | 伊人五月天 | 日本特级黄色 | 午夜在线视频免费观看 | 古装做爰无遮挡三级 | 搞黄视频在线观看 | 日本啪啪网站 | 天天干天天操天天碰 | 乱lun合集小可的奶水 | 国产午夜精品无码一区二区 | 国外成人性视频免费 | 天堂在线91| 在线免费看mv的网站入口 | 日本午夜啪啪 | 成人无码精品1区2区3区免费看 | 久久免费视频观看 | 黄色一级生活片 | 成人av网址在线观看 | 日日爱666| 久久老司机精品视频 | 亚洲高清视频在线 | 国产黑人 | 中文字幕综合网 | 国产嫩bbwbbw高潮 | 99久久精品日本一区二区免费 | 夜夜操天天干 | 齐天大性床战铁扇公主 | 青青射 | 91偷拍网站 | 玉女心经是什么意思 | 五月婷婷一区二区 | 午夜两性视频 | 好了av在线 | 影音先锋啪啪 | 超碰在线进入 | 一级全黄裸体免费观看视频 | 奇米91| 欧美高清精品 | 日本黄色美女视频 | 超碰资源在线 | 91亚洲国产成人精品一区二三 | 娇妻被老王脔到高潮失禁视频 | 欧美成人做爰猛烈床戏 |