首页 > 其他分享 >【BZOJ 3364】Distance Queries 距离咨询 题解

【BZOJ 3364】Distance Queries 距离咨询 题解

时间:2023-08-08 17:56:29浏览次数:55  
标签:Distance cnt fa 3364 题解 father int 100001 dis

原题

简化题意:有一棵 \(n\) 个点的树, \(q\) 组询问,每次询问回答两点间的距离。

令 \(dis[i][j]\) 表示 \(i\) 到 \(j\) 的距离,根节点为 \(rt\) ,则有 \(dis[i][j]=dis[rt][i]+dis[rt][j]-2×dis[rt][lca(i,j)]\) ,按照题意打即可。

#include<bits/stdc++.h>
using namespace std;
#define ll long long 
#define sort stable_sort 
#define endl '\n'
struct node
{
	int nxt,to,w;
}e[100001];
int head[100001],dep[100001],dis[100001],fa[100001][25],N,cnt=0;
void add(int u,int v,int w)
{
	cnt++;
	e[cnt].nxt=head[u];
	e[cnt].to=v;
	e[cnt].w=w;
	head[u]=cnt;
}
void dfs(int x,int father,int w)
{
	fa[x][0]=father;
	dep[x]=dep[father]+1;
	dis[x]=dis[father]+w;
	for(int i=1;(1<<i)<=dep[x];i++)
	{
		fa[x][i]=fa[fa[x][i-1]][i-1];
	}
	for(int i=head[x];i!=0;i=e[i].nxt)
	{
		if(e[i].to!=father)
		{
			dfs(e[i].to,x,e[i].w);
		}
	}
}
int lca(int x,int y)
{
	if(dep[x]>dep[y])
	{
		swap(x,y);
	}
	for(int i=N;i>=0;i--)
	{
		if(dep[x]+(1<<i)<=dep[y])
		{
			y=fa[y][i];
		}
	}
	if(x==y)
	{
		return x;
	}
	else
	{
		for(int i=N;i>=0;i--)
		{
			if(fa[x][i]!=fa[y][i])
			{
				x=fa[x][i];
				y=fa[y][i];
			}
		}
		return fa[x][0];
	}
}
int main()
{
	int n,m,k,i,u,v,w,l,r;
	char pd;
	cin>>n>>m;
	for(i=1;i<=m;i++)
	{
		cin>>u>>v>>w>>pd;
		add(u,v,w);
		add(v,u,w);
	}
	N=log2(n)+1;
	dfs(1,0,1);
	cin>>k;
	for(i=1;i<=k;i++)
	{
		cin>>l>>r;
		cout<<dis[l]+dis[r]-2*dis[lca(l,r)]<<endl;
	}
	return 0;
}

标签:Distance,cnt,fa,3364,题解,father,int,100001,dis
From: https://www.cnblogs.com/The-Shadow-Dragon/p/17615023.html

相关文章

  • Edge Drop传输缓慢的问题解决
    首先在移动端上传一张图片1.图片上传失败上传失败就没得救,网络真的不好,或者微软的服务器暂时被迫挂了。2.图片上传成功网页就会弹出消息......
  • RTSP流媒体服务器LntonNVR(源码版)视频平台通过级联到上级云服务器但视频无法播放的问题
    在经过多次的测试后,官方发布的版本可以正常级联。在实际使用过程中,有用户反馈LntonNVR通过国标GB28181协议级联到上级云服务器平台后,出现了上级平台无法播放的问题,需要我们技术人员协助进行排查。从上图我们可以看出,用户的云服务器平台显示是正常的,但是实际点击播放却存在一些问题......
  • 国标GB28181视频平台LntonGBS(源码版)国标平台大量通道接入后,创建角色接口不响应的问题
    国标GB28181协议视频平台LntonGBS是基于国标GB28181协议的视频云服务平台,支持多路设备同时接入,并对多平台、多终端分发出RTSP、RTMP、FLV、HLS、WebRTC等格式的视频流。平台可提供视频监控直播、云端录像、云存储、检索回放、智能告警、语音对讲、平台级联等功能,在视频能力上,GB2818......
  • 国标GB28181视频平台LntonGBS(源码版)国标视频平台内存错误导致崩溃的问题解决方案
    LntonGBS国标视频云服务通过支持国标GB28181协议,实现了设备接入、实时监控直播、录像、语音对讲、云存储、告警、级联等功能。同时,它还支持将接入的视频流以多种格式(包括RTSP、RTMP、FLV、HLS、WebRTC)进行全终端、全平台分发,实现了无插件播放在Web浏览器、手机浏览器、微信端、PC客......
  • Make Equal 题解
    MakeEqual题目大意给出\(n\)个数字\(a_1,a_2,a_3,......,a_n\),每次操作可以给其中一个数加上\(2\)的非负整数次幂。求最少的操作次数,使得这\(n\)个数相等。思路模拟赛看到这道题然后直接打的暴力拿了40分。暴力思路就是你需要找到一个大于等于\(a_{max}\)的\(m\)......
  • 「JSOI2008」最小生成树计数 题解报告
    简要题意现在给出了一个简单无向加权图。你希望知道这个图中有多少个不同的最小生成树。(如果两颗最小生成树中至少有一条边不同,则这两个最小生成树就是不同的)。输出方案数对\(31011\)取模。SOLUTION这个题求最小生成树的方案所以我们从最小生成树入手(根据kruskal的思路)我们......
  • 题解 [国家集训队] 稳定婚姻
    题目链接首先我们考虑用图论的边描述这个关系。若两者存在夫妻或情侣关系,就连一条边(是有向边还是无向边呢?)。先来考虑两对夫妻的情况,若夫妻边与情侣边交替出现。且一对夫妻在同一个环内,则可以说明分开后能够重新找到另一半。如下图:夫妻a-男b-女c-男d-女情侣a-男d-女c-......
  • 洛谷 CF572B题解
    思路首先,将SELL和BUY交易数据分别存放在两个桶。接下来,从小到大遍历。取出最小的\(s\)个:从大到小遍历,取出最大的\(s\)个。分别存放在queue和stack中,如果不到\(s\)就取完为止。最后,输出queue和stack中的所有元素即可。代码实现:#include<bits/stdc++.h>usi......
  • 题解 [POI2005] SZA-Template
    题目链接充分暴露出对\(border\)结合\(dp\)理解的不足。先来推结论,一个字符串的印章一定是其\(border\),因为只有这样才可能兼顾首尾,但是他的\(border\)不一定是其印章,两个条件不能互推。设\(dp_i\)表示前\(i\)个字符串的最小印章长度。现在考虑如何转移。\(dp_i\)......
  • BZOJ3337 ORZJRY I 题解
    https://vjudge.net/problem/黑暗爆炸-3337题意试维护一个序列,支持以下\(11\)种操作:输入格式说明1xw在\(a_x\)后插入\(w\)2x删除\(a_x\)3xy翻转\((a_x,a_{x+1},\dots,a_y)\)4xyk将\((a_x,a_{x+1},\dots,a_y)\)右移\(k\)次......