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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

BZOJ3743 : [Coci2014]Kamp

發(fā)布時(shí)間:2024/4/13 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BZOJ3743 : [Coci2014]Kamp 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

d[x][0]表示x點(diǎn)向下走且回到x點(diǎn)的最少代價(jià)

d[x][1]表示x點(diǎn)向下走但不回到x點(diǎn)的最少代價(jià)

d[x][2]表示x點(diǎn)向下走的最長(zhǎng)路

d[x][3]表示x點(diǎn)向下走的次長(zhǎng)路

u[x][0]表示x點(diǎn)向上走且回到x點(diǎn)的最少代價(jià)

u[x][1]表示x點(diǎn)向上走但不回到x點(diǎn)的最少代價(jià)

一遍樹(shù)形DP即可

ans[i]=min(d[i][0]+u[i][1],d[i][1]+u[i][0])

?

#include<cstdio> #define N 500010 typedef long long ll; int n,k,i,j,x,y,z,g[N],nxt[N<<1],v[N<<1],w[N<<1],ed,f[N],dis[N],h,t,q[N],size[N],de[N]; ll d[N][4],u[N][2],tmp; bool is[N]; inline void read(int&a){char c;while(!(((c=getchar())>='0')&&(c<='9')));a=c-'0';while(((c=getchar())>='0')&&(c<='9'))(a*=10)+=c-'0';} inline void add(int x,int y,int z){v[++ed]=y;w[ed]=z;nxt[ed]=g[x];g[x]=ed;} inline ll min(ll x,ll y){return x<y?x:y;} int main(){read(n),read(k);for(i=1;i<n;i++)read(x),read(y),read(z),add(x,y,z),add(y,x,z);while(k--)read(x),is[x]=1;q[h=t=1]=1;while(h<=t)for(j=g[x=q[h++]];j;j=nxt[j])if(v[j]!=f[x])f[q[++t]=v[j]]=x,dis[v[j]]=w[j];for(i=n;i;i--){size[x=q[i]]=is[x];for(j=g[x];j;j=nxt[j])if(v[j]!=f[x]&&size[v[j]]){size[x]+=size[v[j]];d[x][0]+=d[v[j]][0]+2LL*w[j];tmp=d[v[j]][1]-d[v[j]][0]-w[j];if(tmp<d[x][2])d[x][3]=d[x][2],d[x][2]=tmp,de[x]=v[j];else d[x][3]=min(d[x][3],tmp);}d[x][1]=d[x][0]+d[x][2];}for(i=2;i<=n;i++)if(size[1]>size[x=q[i]]){u[x][0]=u[f[x]][0]+d[f[x]][0]-d[x][0];u[x][1]=u[f[x]][1]+d[f[x]][0];if(de[f[x]]==x)u[x][1]=min(u[x][1],u[f[x]][0]+d[f[x]][0]+d[f[x]][3]);else u[x][1]=min(u[x][1],u[f[x]][0]+d[f[x]][1]);u[x][1]-=d[x][0]+dis[x];if(!size[x])u[x][0]+=2*dis[x],u[x][1]+=2*dis[x];}for(i=1;i<=n;i++)printf("%lld\n",min(d[i][0]+u[i][1],d[i][1]+u[i][0]));return 0; }

  

?

總結(jié)

以上是生活随笔為你收集整理的BZOJ3743 : [Coci2014]Kamp的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。