当前位置: 首页 > news >正文

l c a

0景区导游 - 蓝桥云课

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e5+100;
int deep[N],dp[N][30],dist[N],p[N];
vector<int>e[N],w[N];
void dfs(int u,int father)
{
       deep[u]=deep[father]+1;
	   dp[u][0]=father;
	   for(int i=1;i<=20;i++)
	   dp[u][i]=dp[dp[u][i-1]][i-1];
	   for(int i=0;i<e[u].size();i++)
	   {
	   	  int v=e[u][i],ww=w[u][i];
	   	  if(v==father)
	   	  continue;
	   	  dist[v]=dist[u]+ww;
	   	  dfs(v,u);
		   }	
} 
int lca(int x,int y)
{
	if(deep[x]<deep[y])
	swap(x,y);
	for(int i=20;i>=0;i--)
	{
		if(deep[dp[x][i]]>=deep[y])
		{
			x=dp[x][i];
		}
	}
	if(x==y)
	return x;
	for(int i=20;i>=0;i--)
	{
		if(dp[x][i]!=dp[y][i])
		{
			x=dp[x][i];
			y=dp[y][i];
		 } 
	}
	return dp[x][0];
}
int getdist(int x,int y)
{
	if(x==0||y==0)
	return 0;
	return dist[x]+dist[y]-2*dist[lca(x,y)];
}
signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	int n,k;
  cin>>n>>k;
  for(int i=1;i<n;i++)
  {
  	int u,v,ww;
  	cin>>u>>v>>ww;
  	e[u].push_back(v);
  	e[v].push_back(u);
  	w[u].push_back(ww);
  	w[v].push_back(ww);
  }
  dfs(1,0);
  int sum=0;
  for(int i=1;i<=k;i++)
  {
  	cin>>p[i];
  	sum+=getdist(p[i],p[i-1]);
   }
   for(int i=1;i<=k;i++)
   {
   	int dist1=getdist(p[i],p[i-1]);
   	int dist2=getdist(p[i],p[i+1]);
   	int dist3=getdist(p[i-1],p[i+1]);
   	cout<<sum-dist1-dist2+dist3<<' ';
	} 
return 0;
}

0砍树 - 蓝桥云课

#include <bits/stdc++.h>
#define int long long
#define pii pair<int,int>
using namespace std;
const int N=1e5+100;
int deep[N],dp[N][30];
vector<int>e[N];
map<pii,int>id;
int f[N],fa[N];
void dfs(int u,int father)
{
       deep[u]=deep[father]+1;
	   dp[u][0]=father;
	   for(int i=1;i<=20;i++)
	   dp[u][i]=dp[dp[u][i-1]][i-1];
	   for(int i=0;i<e[u].size();i++)
	   {
	   	  int v=e[u][i];
	   	  if(v==father)
	   	  continue;
	   	  dfs(v,u);
		   }	
} 
int lca(int x,int y)
{
	if(deep[x]<deep[y])
	swap(x,y);
	for(int i=20;i>=0;i--)
	{
		if(deep[dp[x][i]]>=deep[y])
		{
			x=dp[x][i];
		}
	}
	if(x==y)
	return x;
	for(int i=20;i>=0;i--)
	{
		if(dp[x][i]!=dp[y][i])
		{
			x=dp[x][i];
			y=dp[y][i];
		 } 
	}
	return dp[x][0];
}
void sum(int u,int father)
{
     fa[u]=father;
	for(auto it:e[u])
	{	
	     
		if(it==father)
		continue;
		sum(it,u);
		f[u]+=f[it];
	}
}
signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	int n,m;
  cin>>n>>m;
  for(int i=1;i<n;i++)
  {
  	int u,v;
  	cin>>u>>v;
  	e[u].push_back(v);
  	e[v].push_back(u);
  id[{u,v}]=i;
  id[{v,u}]=i;
  }
  dfs(1,0);
   for(int i=1;i<=m;i++)
   {
   	int a,b;
   	cin>>a>>b;
   	f[a]++;
   	f[b]++;
   	f[lca(a,b)]-=2;
   }
  sum(1,0);
int ans=-1;
for(int i=1;i<=n;i++)
{
	//cout<<f[i]<<'\n';
	if(f[i]==m)
	{
		int k=id[{i,fa[i]}];
		ans=max(ans,k);
	}
}
cout<<ans;
return 0;
}

相关文章:

  • 数据安全基石:备份文件的重要性与自动化实践
  • Elasticsearch:使用 BigQuery 提取数据
  • C语言-文件操作 文件的随机读写
  • Ubuntu 下 nginx-1.24.0 源码分析 - cycle->modules[i]->type
  • P8662 [蓝桥杯 2018 省 AB] 全球变暖--DFS
  • Nginx(基础安装+配置文件)
  • [PWNME 2025] PWN 复现
  • GPU编程实战指南02:CUDA开发快速上手示例
  • C++20 格式化库:强大的字符串格式化工具
  • 【网络】TCP常考知识点详解
  • IDEA Commit 模态提交界面关闭VS开启对比
  • 2025最新比较使用的ai工具都有哪些,分别主要用于哪些方面?
  • 静态时序分析STA——2. 数字单元库-(2)
  • 海思Hi3516DV00移植yolov5-7.0的模型转化流程说明
  • 蓝桥杯备赛:一道数学题(练思维(同余的应用))
  • 大白话react第十四章高阶 React 组件开发和React 状态管理进阶等
  • 【机械视觉】C#+VisionPro联合编程———【三、加载CogToolBlock工具详解,以及实例】
  • VS2022中使用EntityFrameworkCore连接MySql数据库方法
  • HeapDumpBeforeFullGC和HeapDumpOnOutOfMemoryError区别
  • Win10 访问 Ubuntu 18 硬盘
  • 巩义网站建设案例课堂/网络营销课程个人总结3000字
  • 腾讯云学生怎么做网站的/百度旗下的所有产品
  • 网站备案咨询/网络营销的策略有哪些
  • 九九电视剧免费观看完整版/济南网站seo
  • 网站上的图标用什么软件做的/百度推广营销怎么做
  • 网站建设中 什么意思/百度怎么转人工客服