题面:https://www.lydsy.com/JudgeOnline/problem.php?id=3732

题解:Kruskal重构树板子

代码:

 #include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
inline int rd(){
int x=,f=; char c=getchar();
while(c<''||c>''){if(c=='-')f=-; c=getchar();}
while(c>=''&&c<=''){x=x*+c-''; c=getchar();}
return f*x;
}
const int maxn=<<,maxm=,maxk=,maxl=;
int N,M,K,fa[maxn],n,D[maxn],A,B,F[maxn][maxl+],Dep[maxn];
struct Edge{ int u,v,dis; }edge[maxm];
vector<int>to[maxn];
inline bool cmp(const Edge&a,const Edge&b){
return a.dis<b.dis;
}
inline int getf(int n){
if(fa[n]==n) return n;
fa[n]=getf(fa[n]);
return fa[n];
}
inline void Kruskal(){
for(int i=;i<=(N<<);i++) fa[i]=i;
sort(edge+,edge+M+,cmp);
int cnt=;
for(int i=;i<=M;i++){
int x=edge[i].u,y=edge[i].v,d=edge[i].dis;
int f1=getf(x),f2=getf(y);
if(f1!=f2){
n++;
D[n]=d;
fa[f1]=fa[f2]=n;
to[n].push_back(f1);
to[n].push_back(f2);
cnt++;
if(cnt==N-) return;
}
}
return;
}
void Dfs(int x,int fa){
F[x][]=fa;
Dep[x]=Dep[fa]+;
for(int i=;i<=maxl;i++)
F[x][i]=F[F[x][i-]][i-];
for(int i=;i<(int)to[x].size();i++)
Dfs(to[x][i],x);
return;
}
inline int LCA(int x,int y){
if(Dep[x]<Dep[y]) swap(x,y);
for(int i=maxl;i>=;i--){
if(Dep[F[x][i]]>=Dep[y])
x=F[x][i];
}
if(x==y) return x;
for(int i=maxl;i>=;i--)
if(F[x][i]!=F[y][i])
x=F[x][i],y=F[y][i];
return F[x][];
}
int main(){
N=rd(); M=rd(); K=rd();
n=N;
for(int i=;i<=M;i++){
edge[i].u=rd();
edge[i].v=rd();
edge[i].dis=rd();
}
Kruskal();
Dfs(n,);
while(K--){
A=rd(); B=rd();
printf("%d\n",D[LCA(A,B)]);
}
return ;
}

By:AlenaNuna

最新文章

  1. 【java】之joda-time的使用
  2. Css_2跟3
  3. JSCore的基本使用
  4. wordpress模块无法拖拽/显示选项点击无反应
  5. 在外国网站上看到一个用artoolKit做的demo,学习了用gcd创建单列
  6. UltraEdit 和Notepad++ 使用ftp直接编辑linux上文件
  7. babel入门基础
  8. org.jsoup.Jsoup找不到jar包问题解决思路
  9. Mongodb 命令清单
  10. hdu 6185 递推+【矩阵快速幂】
  11. json pickle xml shelve configparser
  12. FireDAC 下的 Sqlite [8] - 自定义函数
  13. centos6.5搭建redmine3.4
  14. WPF ListView 使用GridView 带有Header 以及点击header排序 sort
  15. Android解决下拉刷新控件SwipeRefreshLayout和ViewPager的滑动冲突
  16. 在ubuntu14.04上漏洞环境vulndocker的DOCKER搭建
  17. FJWC2019 直径
  18. 解决windows7无法连接CentOS7系统中oracle问题:ORA-12514 TNS 监听程序当前无法识别
  19. oracle基础教程oracle客户端详解
  20. jenkins的slave报错误: org.owasp.dependencycheck.data.nvdcve.DatabaseException: Exception retrieving vulnerability for cpe:/a:mysql:mysql:5.1.26

热门文章

  1. 【ABAP系列】SAP Smartforms 设置纸张打印格式
  2. IE条件注释语句
  3. Emgu 学习(4) 使用指针访问图像内存
  4. Nginx linux下的安装
  5. 卸载mysql后再安装提示The service already exists!问题解决方法
  6. C++练习 | 不使用头插法逆转单链表
  7. JS中的继承(下)
  8. 公司SQL考核及小结(Oracle)
  9. &lt;input&gt; disabled 属性
  10. softmax函数笔记