nssl1256-C(盟主的忧虑)【并查集】

正题


题目大意

n个点的一棵树,增加了m条密道。对于树上每条边(A,B)(A,B)(A,B)被破坏后,要求A∼BA\sim BAB经过密道最短。


解题思路

引理:对于每个道路被破坏,最多只会经过一条边。

证明:对于每个答案,被破坏后,所在层数低的点找到一条可以走出他的子树的边就好了,如果要走两条边,中间的点要不在子树中,要不在子树外。在子树中直接那个点走就好了,在子树外就不用再走了。

证毕
所以我们就只需要找那一条密道就好了,我们考虑用并查集,先将密道长度排好,然后在每一条密道(x,y,w)(x,y,w)(x,y,w),就看一下xxxyyy之前有没有合并,如果有,就直接用那个答案,如果没有,就合并,用新的答案。


code

#include<cstdio>
#include<algorithm>
#include<cstring>
#define N 100010
using namespace std;
struct node{int to,id,next;
}a[N*2];
struct line{int x,y,w;
}e[N];
int ls[N],tot,x,y,w,ans,dep[N],father[N];
int n,m,S,dfn[N],end[N],cnt,p[N],f[N],d[N];
void addl(int x,int y,int w)//加边
{a[++tot].to=y;a[tot].id=w;a[tot].next=ls[x];ls[x]=tot;
}
bool cmp(line x,line y)
{return x.w<y.w;}
void dfs(int x,int fa)//求深度和父节点,以及每个点对应来的编号
{father[x]=fa;dep[x]=dep[fa]+1;for(int i=ls[x];i;i=a[i].next){int y=a[i].to;if(y==fa) continue;p[y]=a[i].id;dfs(y,x);}
}
int gf(int x)//查找
{return f[x]?f[x]=gf(f[x]):x;}
void doit(int &x,int y)//合并
{d[p[x]]=y;f[x]=gf(father[x]);x=f[x];}
int main()
{scanf("%d%d",&n,&m);memset(d,-1,sizeof(d));for(int i=1;i<n;i++){scanf("%d%d",&x,&y);addl(x,y,i);addl(y,x,i);}for(int i=1;i<=m;i++)scanf("%d%d%d",&e[i].x,&e[i].y,&e[i].w);dfs(1,0);sort(e+1,e+m+1,cmp);//排序for(int i=1;i<=m;i++){int u=gf(e[i].x),v=gf(e[i].y);while(u!=v) doit(dep[u]>dep[v]?u:v,e[i].w);//将所有的点都get}for(int i=1;i<n;i++)printf("%d\n",d[i]);//输出答案
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/323261.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

From Agile To DevOps - 微软开发部门 DevOps 经验谈

在 2013 年 11 月 13 日&#xff0c;我们正式发行了 Visual Studio 2013&#xff0c;以及全新的 Visual Studio Online 服务。但在服务发表之后&#xff0c;Visual Studio Online 却发⽣了异常&#xff0c;造成七个小时服务中断&#xff0c;这是因为在服务上线时&#xff0c;我…

RESTful API 最佳实践

转载自 RESTful API 最佳实践 RESTful 是目前最流行的 API 设计规范&#xff0c;用于 Web 数据接口的设计。 它的大原则容易把握&#xff0c;但是细节不容易做对。本文总结 RESTful 的设计细节&#xff0c;介绍如何设计出易于理解和使用的 API。 一、URL 设计 1.1 动词 宾…

selenium以及chromdrive安装

selenium的安装比较简单&#xff0c;直接pip install selenium就可以了 看有些网上写的chromedrive安装好麻烦啊&#xff0c;我win10自己试了下&#xff0c;感觉并不需要配置那么多环境变量。 直接性 http://npm.taobao.org/mirrors/chromedriver/ 找到相应的chrome版本即可 至…

将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来两个链表的存储空间,不另外占用其他的空间。表中不允许又重复的数据

#include<iostream> using namespace std;typedef struct lnode {//定义结点类型int data;struct lnode *next;//递归定义 } lnode,*LinkList;void CreateList(LinkList &L,int n) {//创建新链表Lnew lnode;//生成一个头结点L->nextNULL;//结点L的next置空for(int…

ssl提高组周二备考赛【2018.10.30】

前言 依旧想去德育基地… 成绩 RankRankRankPersonPersonPersonScoreScoreScoreAAABBBCCC1112017xxy2017xxy2017xxy2102102104040401001001007070702222017myself2017myself2017myself1901901902020201001001007070703332017lxf2017lxf2017lxf1801801800009090909090904442017…

通过C#/.NET API使用CNTK

CNTK v2.2.0提供C#API来建立、训练和评估CNTK模型。 本节概要介绍了CNTK C#API。 在CNTK github respository中可以找到C#训练示例。 使用C&#xff03;/ .NET管理API构建深层神经网络 CNTK C#API 通过CNTKLib命名空间提供基本操作。 CNTK操作需要一个或两个具有必要参数的输入…

Kafka Controller Redesign 方案

转载自 Kafka Controller Redesign 方案 Kafka Controller 是 Kafka 的核心组件&#xff0c;在前面的文章中&#xff0c;已经详细讲述过 Controller 部分的内容。在过去的几年根据大家在生产环境中应用的反馈&#xff0c;Controller 也积累了一些比较大的问题&#xff0c;而针…

做个人网站的原因

昨天b站上看视频&#xff0c;浏览评论时&#xff0c;看到一个网址 https://xiaoyou66.com/ 博主写了大概一百篇的文章&#xff0c;我进来的时候真的是被这js特效给惊到了&#xff0c;个人网站也能变得这么二次元嘛&#xff0c;讲实话&#xff0c;光是看这酷炫的页面都比较有欲望…

nssl1257-A【数论】

正题 题目大意 对于n个数组成的序列&#xff0c;求排好序需要最少交换次数的期望次数。 解题思路 我们可以先求出需要次数总和在乘上n!n!n!的逆元 先打一个表&#xff0c;不难发现 f(n)f(n−1)∗n(n−1)(n−1)!f(n)f(n-1)*n(n-1)(n-1)!f(n)f(n−1)∗n(n−1)(n−1)! 然后我们在…

一文理解Netty模型架构

转载自 一文理解Netty模型架构 本文基于Netty4.1展开介绍相关理论模型&#xff0c;使用场景&#xff0c;基本组件、整体架构&#xff0c;知其然且知其所以然&#xff0c;希望给读者提供学习实践参考。 1 Netty简介 Netty是 一个异步事件驱动的网络应用程序框架&#xff0c;用…

尝试涉猎更多领域

昨天b站上看视频&#xff0c;浏览评论时&#xff0c;看到一个网址 https://xiaoyou66.com/ 博主写了大概一百篇的文章&#xff0c;我进来的时候真的是被这js特效给惊到了&#xff0c;个人网站也能变得这么二次元嘛&#xff0c;讲实话&#xff0c;光是看这酷炫的页面都比较有欲望…

nssl1258-naive的瓶子【贪心】

正题 题目大意 有n个瓶子&#xff0c;将一个瓶子变成相邻一个瓶子的颜色价值为它们颜色值的乘积&#xff0c;求将所有瓶子变成同一个颜色的最低价值。 解题思路 枚举最后的剩下的颜色&#xff0c;然后对于每个瓶子只有两种可能 1.直接变成那个颜色 2.变成别的颜色在变成那个颜…

聊聊分布式事务,再说说解决方案

前言 最近很久没有写博客了&#xff0c;一方面是因为公司事情最近比较忙&#xff0c;另外一方面是因为在进行 CAP 的下一阶段的开发工作&#xff0c;不过目前已经告一段落了。 接下来还是开始我们今天的话题&#xff0c;说说分布式事务&#xff0c;或者说是我眼中的分布式事务&…

已知两个链表A和B分别表示两个集合,其元素递增排列。请设计算法求出两个集合A和集合B的差集(近由在A中出现而不再B中出现的元素所构成的集合),并以同样的形式存储,同时返回该集合的元素个数。

#include <iostream> using namespace std; //第四题 typedef struct Lnode {int data;struct Lnode *next;} lnode, *linklist; void creatlist_h(linklist &L, int n) {lnode *p;Lnew lnode;L->nextNULL;for(int i0; i<n; i){pnew lnode;cin>>p->da…

Redis+Tomcat+Nginx集群实现Session共享,Tomcat Session共享

转载自 RedisTomcatNginx集群实现Session共享&#xff0c;Tomcat Session共享 一、Session共享使用tomcat-cluster-redis-session-manager插件实现 插件地址见&#xff1a; https://github.com/ran-jit/tomcat-cluster-redis-session-manager 该插件支持Tomcat7、Tomcat8、To…

个人博客搭建

先下载node.js 用npm或cnpm安装hexo cnpm install hexo 再创建一个文件夹&#xff0c;在文件夹目录下打开cmd 输入 hexo init 输入 hexo s 这就在本地算是完成了一个博客的创建 新建博客hexo n ‘Hello world’ hexo clean hexo s 就可以再次启动&#xff0c;这样 记得先 cn…

C#使用Xamarin开发可移植移动应用进阶篇(10.综合演练,来一份增删改查CRUD)

说点什么.. 呃 也有半个月没更新了. 本来这篇的Demo早就写完了,文章也构思好了.迟迟没发布..是因为实在太忙.. 项目要上线..各种 你们懂的.. 正赶上自己十一人生大事..结婚..所以..忙的那叫一个脚不沾地啊. 今天的学习内容? 使用我们前面所学的技术,写一个增删改查. 效果如下…

nssl1259-sequence【组合数,差分】

正题 题目大意 操作(l,r,k)(l,r,k)(l,r,k)表示 l∼rl\sim rl∼r这段区间&#xff0c;对于每个iii&#xff0c;加上Ckik−lC_k^{ik-l}Ckik−l​ 解题思路 我们可以发现对于一个全是1的序列&#xff0c;求kkk次前缀和&#xff0c;就是杨辉三角的第k1k1k1列&#xff0c;那么对于…

hexo部署在码云出现样式问题

然而本地服务器并没有任何问题 重建一个 重新建一个仓库 还是这种情况&#xff0c;回头再找原因&#xff0c;两次都是这种情况&#xff0c;就是配置错了 借用 https://blog.csdn.net/xiangwanpeng/article/details/53155642 https://blog.csdn.net/qq_29347295/article/deta…

当你输入一个网址的时候,实际会发生什么?

转载自 当你输入一个网址的时候&#xff0c;实际会发生什么? 译文:http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/ 作为一个软件开发者&#xff0c;你一定会对网络应用如何工作有一个完整的层次化的认知&#xff0c;同样这里也包括这些应用所…