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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

洛谷P4408 [NOI2003]逃学的小孩

發布時間:2023/12/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 洛谷P4408 [NOI2003]逃学的小孩 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

鏈接

https://www.luogu.org/problem/show?pid=4408


大意


max{dis[A][B]+min(dis[B][C],dis[A][C])}max\{dis[A][B]+min(dis[B][C],dis[A][C])\}max{dis[A][B]+min(dis[B][C],dis[A][C])}


思路

max{dis[A][B]}max\{dis[A][B]\}max{dis[A][B]}這個用樹的直徑
min(dis[B][C],dis[A][C])min(dis[B][C],dis[A][C])min(dis[B][C],dis[A][C])這個暴力


代碼

#include<cstdio> #include<cctype> #include<algorithm> #define ri register int using namespace std;int n,m,l[200001],p,q,tot,pr[200001]; struct node{int next,to,w;}e[400001]; inline void add(ri u,ri v,ri w){e[++tot]=(node){l[u],v,w};l[u]=tot;return;} long long Ans,ans,dis[200001],f[200001]; inline char Getchar() {static char buf[100000],*p1=buf+100000,*pend=buf+100000;if(p1==pend){p1=buf; pend=buf+fread(buf,1,100000,stdin);if (pend==p1) return -1;}return *p1++; } inline long long read() {char c;int d=1;long long f=0;while(c=Getchar(),!isdigit(c))if(c==45)d=-1;f=(f<<3)+(f<<1)+c-48;while(c=Getchar(),isdigit(c)) f=(f<<3)+(f<<1)+c-48;return d*f; } inline void write(register long long x) {if(x<0)write(45),x=-x;if(x>9)write(x/10);putchar(x%10+48);return; } inline void dp(ri x,ri fa)//求樹的直徑 {for(ri i=l[x];i;i=e[i].next){int y=e[i].to;if(y==fa) continue;dp(y,x);if(f[x]+f[y]+e[i].w>ans){ans=f[x]+f[y]+e[i].w;p=pr[x];q=pr[y];//保存}if(f[y]+e[i].w>f[x]){f[x]=f[y]+e[i].w;pr[x]=pr[y];//連接}} } inline void dfs(ri x,ri fa,long long s)//暴力求距離 {dis[x]=min(s,dis[x]);for(ri i=l[x];i;i=e[i].next){int y=e[i].to;if(y==fa) continue;dfs(y,x,s+e[i].w);} } signed main() {n=read();m=read();for(ri i=1;i<=n;i++) pr[i]=i,dis[i]=1e18;for(ri i=1,x,y,w;i<=m;i++) x=read(),y=read(),w=read(),add(x,y,w),add(y,x,w);dp(1,0);dfs(p,0,0);dfs(q,0,0);for(ri i=1;i<=n;i++) Ans=max(Ans,dis[i]);write(Ans+ans); }

總結

以上是生活随笔為你收集整理的洛谷P4408 [NOI2003]逃学的小孩的全部內容,希望文章能夠幫你解決所遇到的問題。

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