bzoj 3732Network
先搞个最小生成树,然后lca(和之前的一个cf题差不多2333, 纯属颓废了。。)
顺便思考了一下正确性。
因为所求的是所有路径中最大边的最小值。而kruskal每次往里添加的就是最小边。所以在生成树之后两点之间的路径,都是严格按最小的插入的,所以里面的最大边会最小。(貌似说了些废话,,,)
- #include<bits/stdc++.h>
- #define inf 0x7fffffff
- #define LL long long
- #define N 100005
- using namespace std;
- inline int ra()
- {
- int x=,f=; char ch=getchar();
- while (ch<'' || ch>'') {if (ch=='-') f=-; ch=getchar();}
- while (ch>='' && ch<='') {x=x*+ch-''; ch=getchar();}
- return x*f;
- }
- struct node{
- int to,next,v;
- }e[N<<];
- struct data{
- int x,y,v;
- }a[N];
- int n,m,k;
- int head[N],cnt,deep[N],father[N],f[N][],mx[N][];
- void insert(int x, int y, int v)
- {
- e[++cnt].to=y;
- e[cnt].next=head[x];
- e[cnt].v=v;
- head[x]=cnt;
- }
- int find(int x){return father[x]==x?x:father[x]=find(father[x]);}
- bool cmp(data a, data b){return a.v<b.v;}
- void dfs(int x, int fa)
- {
- for (int i=; i<=; i++)
- {
- f[x][i]=f[f[x][i-]][i-];
- mx[x][i]=max(mx[x][i-],mx[f[x][i-]][i-]);
- }
- for (int i=head[x];i;i=e[i].next)
- {
- if (e[i].to==fa) continue;
- f[e[i].to][]=x;
- mx[e[i].to][]=e[i].v;
- deep[e[i].to]=deep[x]+;
- dfs(e[i].to,x);
- }
- }
- int getans(int x, int y)
- {
- int ans=;
- if (deep[x]<deep[y]) swap(x,y);
- int t=deep[x]-deep[y];
- for (int i=; i<=; i++)
- if (t&(<<i)) ans=max(ans,mx[x][i]),x=f[x][i];
- for (int i=; i>=; i--)
- if (f[x][i]!=f[y][i])
- {
- ans=max(ans,max(mx[x][i],mx[y][i]));
- x=f[x][i]; y=f[y][i];
- }
- if (x!=y) return max(ans,max(mx[x][],mx[y][]));
- return ans;
- }
- int main()
- {
- n=ra(); m=ra(); k=ra();
- for (int i=; i<=m; i++)
- a[i].x=ra(),a[i].y=ra(),a[i].v=ra();
- sort(a+,a+m+,cmp);
- for (int i=; i<=n; i++) father[i]=i;
- int tot=;
- for (int i=; i<=m; i++)
- {
- int p=find(a[i].x),q=find(a[i].y);
- if (q!=p)
- father[q]=p,tot++,insert(a[i].x,a[i].y,a[i].v),insert(a[i].y,a[i].x,a[i].v);
- if (tot==n-) break;
- }
- dfs(,);
- for (int i=; i<=k; i++)
- {
- int x=ra(),y=ra();
- printf("%d\n",getans(x,y));
- }
- return ;
- }
bzoj 3732Network的更多相关文章
- BZOJ 2127: happiness [最小割]
2127: happiness Time Limit: 51 Sec Memory Limit: 259 MBSubmit: 1815 Solved: 878[Submit][Status][Di ...
- BZOJ 3275: Number
3275: Number Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 874 Solved: 371[Submit][Status][Discus ...
- BZOJ 2879: [Noi2012]美食节
2879: [Noi2012]美食节 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1834 Solved: 969[Submit][Status] ...
- bzoj 4610 Ceiling Functi
bzoj 4610 Ceiling Functi Description bzoj上的描述有问题 给出\(n\)个长度为\(k\)的数列,将每个数列构成一个二叉搜索树,问有多少颗形态不同的树. Inp ...
- BZOJ 题目整理
bzoj 500题纪念 总结一发题目吧,挑几道题整理一下,(方便拖板子) 1039:每条线段与前一条线段之间的长度的比例和夹角不会因平移.旋转.放缩而改变,所以将每条轨迹改为比例和夹角的序列,复制一份 ...
- 【sdoi2013】森林 BZOJ 3123
Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整数N,M,T,分别表示节点数.初始边数.操作数.第三行包含N个非负整数 ...
- 【清华集训】楼房重建 BZOJ 2957
Description 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多少栋房子. 为了简化问题,我们考虑这些 ...
- 【splay】文艺平衡树 BZOJ 3223
Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 ...
- bzoj 刷水
bzoj 3856: Monster 虽然是sb题,,但是要注意h可能<=a,,,开始忘记判了WA得很开心. #include <iostream> #include <cst ...
随机推荐
- @Controller 和 @RestController 的区别
@Controller和@RestController的区别? 官方文档:@RestController is a stereotype annotation that combines @Respo ...
- php 实现店铺装修6
/** * @title 获取预览或发布的蜂店模板样式 * @param store_id 是 string 店铺id * @param type 是 int 装修模板的状态:1-预览蜂店装修模板样式 ...
- 网络流的最大流入门(从普通算法到dinic优化)
网络流(network-flows)是一种类比水流的解决问题方法,与线性规划密切相关.网络流的理论和应用在不断发展.而我们今天要讲的就是网络流里的一种常见问题--最大流问题. 最大流问题(maximu ...
- JavaWeb开发:从购买服务器到简单demo运行
写这篇文章的目的: 一个是为了记录实施过程,方便自己日后查阅: 另一个是给项目组成员提供一个参考,方便他们以后搭建自己的项目环境: 当然若能帮助到更多的朋友,那就再好不过了:D 需要注意: 我本身也是 ...
- css解决字段不换行
1.自动换行 <div style="widht:100%;height:100%;word-wrap: break-word">啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊 ...
- List循环添加数据覆盖问题
问题:java开发时,当我们使用List.add();循环添加数据,有时会出现前面添加的数据会被后面覆盖的现象.这是怎么回事尼? 会覆盖数据的代码 package com.boot.test; imp ...
- jumpserver手动配置文档
1.环境 centos7.6 硬盘 200G cpu 8核心 内存 32G (本地测试的时候,有报错,原因为虚拟机配置不够,此时为在pve虚拟化上面做的linux系统) 2.https:/ ...
- 题解 nflsoj489 【六校联合训练 CSP #15】小D与随机
题目链接 考虑枚举好点的集合.此时要考虑的问题是如何填入\(1\sim n\)这些数使得恰好我们枚举到的这些点是好点,即:求出有多少种合法的填数方案. \(1\)号点一定是好点.那么除\(1\)号点外 ...
- 基于 QEMU进行 arm 仿真开发 (以 vexpress-a9 为例)
背景 基于 QEMU 的仿真可以节省 硬件成本. 参考:<qemu-system-arm仿真vexpress-a9踩坑记>.<在Ubuntu下使用QEMU搭建arm开发环境(一)搭建 ...
- python里的def 方法中->代表什么意思?
功能注释 函数注释是关于用户定义函数使用的类型的完全可选元数据信息(请参阅PEP 3107和 PEP 484了解更多信息). 注释__annotations__ 作为字典存储在函数的属性中,对函数的任 ...