分析

先建出最小生成树

之后每次倍增找环即可

代码

#include<bits/stdc++.h>
using namespace std;
#define int long long
struct node {
int x,y,z,is,id;
};
node d[];
int head[],nxt[],to[],w[],cnt,res,dep[];
int pr[][],sum[][],n,m,ans[],fa[],tot;
inline void add(int x,int y,int z){
nxt[++cnt]=head[x];
head[x]=cnt;
to[cnt]=y;
w[cnt]=z;
nxt[++cnt]=head[y];
head[y]=cnt;
to[cnt]=x;
w[cnt]=z;
}
inline void dfs(int x,int fa){
dep[x]=dep[fa]+;
pr[x][]=fa;
for(int i=head[x];i;i=nxt[i])
if(to[i]!=fa)sum[to[i]][]=w[i],dfs(to[i],x);
}
inline int lca(int x,int y){
if(dep[x]<dep[y])swap(x,y);
int len=dep[x]-dep[y],wh=;
for(int i=;i<=;i++)
if((<<i)&len)wh=max(wh,sum[x][i]),x=pr[x][i];
if(x==y)return wh;
for(int i=;i>=;i--)
if(pr[x][i]!=pr[y][i]){
wh=max(wh,max(sum[x][i],sum[y][i]));
x=pr[x][i];
y=pr[y][i];
}
wh=max(wh,max(sum[x][],sum[y][]));
return wh;
}
inline bool cmp(const node a,const node b){return a.z<b.z;}
inline int sf(int x){return fa[x]==x?x:fa[x]=sf(fa[x]);}
signed main(){
int i,j,k;
scanf("%lld%lld",&n,&m);
for(i=;i<=m;i++){
scanf("%lld%lld%lld",&d[i].x,&d[i].y,&d[i].z);
d[i].id=i;
}
for(i=;i<=n;i++)fa[i]=i;
sort(d+,d+m+,cmp);
for(i=;i<=m;i++){
int x=d[i].x,y=d[i].y;
if(sf(x)==sf(y))continue;
fa[sf(y)]=sf(x);
add(x,y,d[i].z);
res+=d[i].z;
tot++;
d[i].is=;
if(tot==n-)break;
}
dfs(,);
for(i=;i<=;i++)
for(j=;j<=n;j++)
pr[j][i]=pr[pr[j][i-]][i-],
sum[j][i]=max(sum[j][i-],sum[pr[j][i-]][i-]);
for(i=;i<=m;i++){
if(d[i].is)ans[d[i].id]=res;
else ans[d[i].id]=res+d[i].z-lca(d[i].x,d[i].y);
}
for(i=;i<=m;i++)printf("%lld\n",ans[i]);
return ;
}

EZOJ #386 最小生成树的更多相关文章

  1. 图的全部实现(邻接矩阵 邻接表 BFS DFS 最小生成树 最短路径等)

    1 /** 2 * C: Dijkstra算法获取最短路径(邻接矩阵) 3 * 6 */ 7 8 #include <stdio.h> 9 #include <stdlib.h> ...

  2. 最小生成树(Kruskal算法-边集数组)

    以此图为例: package com.datastruct; import java.util.Scanner; public class TestKruskal { private static c ...

  3. 最小生成树计数 bzoj 1016

    最小生成树计数 (1s 128M) award [问题描述] 现在给出了一个简单无向加权图.你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的最小生成树.(如果两颗最小生成树中至少有一 ...

  4. poj 1251 Jungle Roads (最小生成树)

    poj   1251  Jungle Roads  (最小生成树) Link: http://poj.org/problem?id=1251 Jungle Roads Time Limit: 1000 ...

  5. 【BZOJ 1016】【JSOI 2008】最小生成树计数

    http://www.lydsy.com/JudgeOnline/problem.php?id=1016 统计每一个边权在最小生成树中使用的次数,这个次数在任何一个最小生成树中都是固定的(归纳证明). ...

  6. 最小生成树---Prim算法和Kruskal算法

    Prim算法 1.概览 普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树.意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (gra ...

  7. Delaunay剖分与平面欧几里得距离最小生成树

    这个东西代码我是对着Trinkle的写的,所以就不放代码了.. Delaunay剖分的定义: 一个三角剖分是Delaunay的当且仅当其中的每个三角形的外接圆内部(不包括边界)都没有点. 它的存在性是 ...

  8. 最小生成树(prim&kruskal)

    最近都是图,为了防止几次记不住,先把自己理解的写下来,有问题继续改.先把算法过程记下来: prime算法:                  原始的加权连通图——————D被选作起点,选与之相连的权值 ...

  9. 最小生成树 prime poj1258

    题意:给你一个矩阵M[i][j]表示i到j的距离 求最小生成树 思路:裸最小生成树 prime就可以了 最小生成树专题 AC代码: #include "iostream" #inc ...

随机推荐

  1. (136)leetcode刷题Python笔记——只出现一次的数字

    题目如下: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现吗? 示例 1: ...

  2. CDH平台搭建遇到的问题

    安装之前遇到的问题:   Note: Forwarding request to 'systemctl disable NetworkManager.service'. Removed symlink ...

  3. sql下的xml配置文件中特殊使用的sql语句编写

    1.使用服用的sql语句------------查询学生表所有字段 <sql id="selectAllStuAll"> select stu.id,stu.name, ...

  4. Java代码执行过程概述

    Java代码经历三个阶段:源代码阶段(Source) -> 类加载阶段(ClassLoader) -> 运行时阶段(Runtime) 首先我们来理清一下Java代码整个执行过程, 让我们对 ...

  5. 关于 Python 程序的运行方面,有什么手段能提升性能?

    1.使用多进程,充分利用机器的多核性能2.对于性能影响较大的部分代码,可以使用 C 或 C++编写3.对于 IO 阻塞造成的性能影响,可以使用 IO 多路复用来解决4.尽量使用 Python 的内建函 ...

  6. linux ssh 服务优化

    linux 默认管理员 root,port 端口号是 22,为了安全,我们要改掉默认的管理员和端口 配置文件/etc/ssh/sshd_config [root@oldboy ~]# vi /etc/ ...

  7. HTTP RESTful服务开发 spring boot+Maven +Swagger

    这周配合第三方平台整合系统,需要提供HTTP REST服务和使用ActiveMQ推送消息,研究了下,做个笔记. 1.使用eclipse创建Spring Boot项目  创建Spring Boot项目( ...

  8. node.js从入门到放弃《模块》

    在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很 ...

  9. Linux wc -l 统计行数问题

    统计文件行数   通过wc -l 来实现. [root@xguang_02 xguang]# wc -l tt.dat     798 tt.dat    而通过nl\ cat -n 查看时发现为79 ...

  10. 微服务+DDD代码结构例子

    这是一个基本的微服务+DDD演示例子: 基于 Spring Boot 1.5.6 , Spring Cloud Edgware.SR4 Version 微服务 + DDD,个人觉得应该是首先是从微服务 ...