LCA倍增(zstu4395)

题目链接:http://oj.acm.zstu.edu.cn/JudgeOnline/problem.php?id=4395

思路:倍增找公共祖先,顺便处理出路径上最大值。

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const ll inff = 0x3f3f3f3f3f3f3f3f;
#define FOR(i,a,b) for(int i(a);i<=(b);++i)
#define FOL(i,a,b) for(int i(a);i>=(b);--i)
#define REW(a,b) memset(a,b,sizeof(a))
#define inf int(0x3f3f3f3f)
#define si(a) scanf("%d",&a)
#define sl(a) scanf("%I64d",&a)
#define sd(a) scanf("%lf",&a)
#define ss(a) scanf("%s",a)
#define mod int(1e9+7)
#define pb push_back
#define lc (d<<1)
#define Pll pair
#define P pair
#define pi acos(-1)
const int N=20008;
int deep[N],fa[N][20],n,m,e[N][20],s[N],p[N],mx;
bool vis[N];
vector g[N];
void dfs(int u)
{vis[u]=1;for(int i=0;i>n>>m;int a,b,z;FOR(i,1,n-1){si(a),si(b);g[b].pb(a);g[a].pb(b);}FOR(i,1,n)  si(e[i][0]);dfs(1);FOR(i,1,n)  if(p[i])  fa[i][0]=p[i];bz();while(m--){si(a),si(b);ans(a,b);}return 0;
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部