layout: post
title: 训练指南 UVA - 11354(最小生成树 + 倍增LCA)
author: "luowentaoaa"
catalog: true
mathjax: true
tags:
- 最小生成树
- LCA
- 图论
- 训练指南
Bond
UVA - 11354
题意
给你一张无向图,然后有若干组询问,让你输出a->b的最小瓶颈路
题解
先求出最小生成树,然后对这个最小生成树做LCA。
#include
using namespace std;
typedef long long ll;
const ll mod=998244353;
const int maxn=1e5+50;
const int logmaxn=20;
const ll inf=0x3f3f3f3f3f3f3f3fLL;
struct LCA{int n;int fa[maxn]; ///父亲数组int cost[maxn]; ///和父亲的费用int L[maxn]; ///层次(根节点为0)int anc[maxn][logmaxn]; /// anc[p][i]是结点p的第2^i级父亲。anc[i][0] = fa[i]int maxcost[maxn][logmaxn]; /// maxcost[p][i]是i和anc[p][i]的路径上的最大费用void preprocess(){for(int i=0;i
};
LCA solver;
int pa[maxn];
int findset(int x){return pa[x]!=x?pa[x]=findset(pa[x]):x;}
vector
void dfs(int u,int fa,int level){solver.L[u]=level;for(int i=0;i
const int maxm=1e5+10;
Edge e[maxm];int main()
{std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);int kase=0,n,m,x,y,d,Q;while(cin>>n>>m){for(int i=0;i