博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj 1977 [BeiJing2010组队]次小生成树 Tree
阅读量:4349 次
发布时间:2019-06-07

本文共 1450 字,大约阅读时间需要 4 分钟。

题目:

kruscal别忘了先按边权sort。自己觉得那部分处理得还挺好的。(联想到之前某题的经验)

没管重边。好像还行?

#include
#include
#include
#include
#include
#define ll long longusing namespace std;const int N=1e5+5,M=3e5+5,Lm=20,INF=1e9+7;int n,m,head[N],xnt=1,pre[N][Lm+5],mx[N][Lm+5][2];int fa[N],dis[N],fr[N],dep[N];ll ans,zl;bool vis[N],use[M<<1];struct Ed{ int next,fr,to,w,bh; Ed(int n=0,int f=0,int t=0,int w=0):next(n),fr(f),to(t),w(w) {} bool operator< (const Ed &b)const {
return bh
<<1];void add(int x,int y,int z){ ed[++xnt]=Ed(head[x],x,y,z);head[x]=xnt;ed[xnt].bh=xnt; ed[++xnt]=Ed(head[y],y,x,z);head[y]=xnt;ed[xnt].bh=xnt;}int find(int a){ return fa[a]==a?a:fa[a]=find(fa[a]);}bool cmp(Ed u,Ed v){ return u.w
=0;i--) if(dep[pre[x][i]]>=dep[y]) cz(w0,w1,x,i),x=pre[x][i]; if(x==y)return; for(int i=Lm;i>=0;i--) if(pre[x][i]!=pre[y][i]) { cz(w0,w1,x,i);cz(w0,w1,y,i); x=pre[x][i];y=pre[y][i]; } if(x!=y) { cz(w0,w1,x,0);cz(w0,w1,y,0); x=pre[x][0];y=pre[y][0]; }}int main(){ scanf("%d%d",&n,&m);int x,y,z; for(int i=1;i<=m;i++) { scanf("%d%d%d",&x,&y,&z);add(x,y,z); } kruscal(); dfs(1,0);zl=INF; for(int i=2;i<=xnt;i+=2) if(!use[i]) { int w0=-1,w1=-1; solve(ed[i].fr,ed[i].to,w0,w1); if(ed[i].w>w0)zl=min(zl,(ll)ed[i].w-w0); else if(ed[i].w>w1)zl=min(zl,(ll)ed[i].w-w1); } printf("%lld",ans+zl); return 0;}

 

转载于:https://www.cnblogs.com/Narh/p/9275960.html

你可能感兴趣的文章
4.1 分解条件式
查看>>
《代码大全》学习摘要(五)软件构建中的设计(下)
查看>>
C#检测驱动是否安装的问题
查看>>
web-4. 装饰页面的图像
查看>>
微信测试账户
查看>>
学习使用Django一 安装虚拟环境
查看>>
Hibernate视频学习笔记(8)Lazy策略
查看>>
CSS3 结构性伪类选择器(1)
查看>>
IOS 杂笔-14(被人遗忘的owner)
查看>>
前端基础之BOM和DOM
查看>>
[T-ARA/筷子兄弟][Little Apple]
查看>>
编译Libgdiplus遇到的问题
查看>>
【NOIP 模拟赛】Evensgn 剪树枝 树形dp
查看>>
java学习笔记④MySql数据库--01/02 database table 数据的增删改
查看>>
程序员最想得到的十大证件,你最想得到哪个?
查看>>
form表单序列化后的数据转json对象
查看>>
一般处理程序在VS2012中打开问题
查看>>
Servlet和JSP的异同。
查看>>
20145303刘俊谦 Exp7 网络欺诈技术防范
查看>>
一、 kettle开发、上线常见问题以及防错规范步骤
查看>>