3732: Network
3732: Network
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 395 Solved: 179
[Submit][Status]
Description
给你N个点的无向图 (1 <= N <= 15,000),记为:1…N。
图中有M条边 (1 <= M <= 30,000) ,第j条边的长度为: d_j ( 1 < = d_j < = 1,000,000,000).
现在有 K个询问 (1 < = K < = 15,000)。
每个询问的格式是:A B,表示询问从A点走到B点的所有路径中,最长的边最小值是多少?
Input
第一行: N, M, K。
第2..M+1行: 三个正整数:X, Y, and D (1 <= X <=N; 1 <= Y <= N). 表示X与Y之间有一条长度为D的边。
第M+2..M+K+1行: 每行两个整数A B,表示询问从A点走到B点的所有路径中,最长的边最小值是多少?
Output
对每个询问,输出最长的边最小值是多少。
Sample Input
1 2 5
2 3 4
3 4 3
1 4 8
2 5 7
4 6 2
1 2
1 3
1 4
2 3
2 4
5 1
6 2
6 1
Sample Output
5
5
4
4
7
4
5
HINT
1 <= N <= 15,000
1 <= M <= 30,000
1 <= d_j <= 1,000,000,000
1 <= K <= 15,000
Source
1 type 2 point=^node; 3 node=record 4 w,g:longint; 5 next:point; 6 end; 7 8 var 9 i,j,k,l,m,n,t:longint; 10 a:array[0..40000] of point; 11 b:array[0..40000,1..3] of longint; 12 c,f,g,h:array[0..40000] of longint; 13 d:array[0..20,0..40000] of longint; 14 e:array[0..20,0..40000] of longint; 15 function getfat(x:longint):longint;inline; 16 begin 17 while x<>c[x] do x:=c[x]; 18 getfat:=x; 19 end; 20 function tog(x,y:longint):boolean;inline; 21 begin 22 exit(getfat(x)=getfat(y)); 23 end; 24 procedure merge(x,y:longint);inline; 25 begin 26 c[getfat(x)]:=getfat(y); 27 end; 28 29 procedure add(x,y,z:longint);inline; 30 var p:point; 31 begin 32 new(p); 33 p^.g:=y; 34 p^.w:=z; 35 p^.next:=a[x]; 36 a[x]:=p; 37 end; 38 procedure swap(var x,y:longint);inline; 39 var z:longint; 40 begin 41 z:=x;x:=y;y:=z; 42 end; 43 procedure sort(l,r:longint);inline; 44 var i,j,x,y:longint; 45 begin 46 i:=l;j:=r;x:=b[(l+r) div 2,3]; 47 repeat 48 while b[i,3]<x do inc(i); 49 while b[j,3]>x do dec(j); 50 if i<=j then 51 begin 52 swap(b[i,1],b[j,1]); 53 swap(b[i,2],b[j,2]); 54 swap(b[i,3],b[j,3]); 55 inc(i);dec(j); 56 end; 57 until i>j; 58 if l<j then sort(l,j); 59 if i<r then sort(i,r); 60 end; 61 procedure dfs(x:longint);inline; 62 var p:point; 63 begin 64 p:=a[x]; 65 while p<>nil do 66 begin 67 if d[0,p^.g]=0 then 68 begin 69 d[0,p^.g]:=x; 70 e[0,p^.g]:=p^.w; 71 c[p^.g]:=c[x]+1; 72 dfs(p^.g); 73 end; 74 p:=p^.next; 75 end; 76 end; 77 function max(x,y:longint):longint;inline; 78 begin 79 if x>y then max:=x else max:=y; 80 end; 81 function fatget(x,y:longint):longint;//inline; 82 var i:longint; 83 begin 84 i:=0; 85 while y>0 do 86 begin 87 if odd(y) then x:=d[i,x]; 88 inc(i); 89 y:=y div 2; 90 end; 91 exit(x); 92 end; 93 function getmax(x,y:longint):longint;//inline; 94 var i,j:longint; 95 begin 96 i:=0;j:=0; 97 while y>0 do 98 begin 99 if odd(y) then 100 begin 101 j:=max(j,e[i,x]); 102 x:=d[i,x]; 103 end; 104 inc(i); 105 y:=y div 2; 106 end; 107 exit(j); 108 end; 109 function getcom(x,y:longint):longint;//inline; 110 var i,j,k,l:longint; 111 begin 112 if x=y then exit(x); 113 if c[x]<c[y] then swap(x,y); 114 x:=fatget(x,c[x]-c[y]); 115 if x=y then exit(x); 116 i:=20; 117 while i>=0 do 118 begin 119 if d[i,x]<>d[i,y] then 120 begin 121 x:=d[i,x]; 122 y:=d[i,y]; 123 end; 124 dec(i); 125 end; 126 exit(d[0,x]); 127 end; 128 function getpath(x,y:longint):longint;//inline; 129 var i,j,k,l:longint; 130 begin 131 l:=getcom(x,y); 132 getpath:=max(getmax(x,c[x]-c[l]),getmax(y,c[y]-c[l])); 133 end; 134 135 begin 136 readln(n,m,t); 137 for i:=1 to n do a[i]:=nil; 138 for i:=1 to n do c[i]:=i; 139 for i:=1 to m do 140 readln(b[i,1],b[i,2],b[i,3]); 141 sort(1,m); 142 j:=1; 143 for i:=1 to n-1 do 144 begin 145 while tog(b[j,1],b[j,2]) do inc(j); 146 add(b[j,1],b[j,2],b[j,3]); 147 add(b[j,2],b[j,1],b[j,3]); 148 merge(b[j,1],b[j,2]); 149 end; 150 fillchar(d,sizeof(d),0); 151 fillchar(c,sizeof(c),0); 152 d[0,1]:=-1; 153 dfs(1); 154 d[0,1]:=0; 155 for i:=1 to 20 do 156 begin 157 for j:=1 to n do 158 begin 159 d[i,j]:=d[i-1,d[i-1,j]]; 160 e[i,j]:=max(e[i-1,d[i-1,j]],e[i-1,j]); 161 end; 162 end; 163 for i:=1 to t do 164 begin 165 readln(j,k); 166 writeln(getpath(j,k)); 167 end; 168 end. 169
转载于:https://www.cnblogs.com/HansBug/p/4172766.html
3732: Network相关推荐
- 倍增LCA(bzoj 3732: Network)
3732: Network Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1836 Solved: 868 [Submit][Status][Di ...
- BZOJ 3732 Network
在下觉得这是一道很鬼畜的神题,因为在下第一眼觉得要用整体二分做. 虽然在下已经知道它是Kruskal+lca了,还是仍不住想试着用整体二分,然后写了一个自认为十分好看的优秀代码,十分优秀的T了.. # ...
- kruskal 重构树(讲解 + 例题)
kruskal重构树 如何建树 模仿kruskalkruskalkruskal,先将所有边排序. 依次遍历每一条边,如果这条边的两个节点(u,vu, vu,v)不在同一个连通块里面, 则新建一个nod ...
- php 正则匹配乱码,php正则匹配utf-8编码的中文汉字
在javascript中,要判断字符串是中文是很简单的.比如: var str = "php编程"; if (/^[\u4e00-\u9fa5]+$/.test(str)) { a ...
- Network 黑暗爆炸 - 3732 倍增lca || Kruskal重构树
传送门 文章目录 题意: 思路: 题意: 思路: 两点间最长边最小值一定是最小生成树上两点间的最大值,这个比较容易证,就不多说了. 知道这个结论后, 我们直接跑一个KruskalKruskalKrus ...
- Chrome开发工具Network没有显示完整的http request和response对话
为什么80%的码农都做不了架构师?>>> Chrome开发工具Network没有显示完整的http request和response对话 这几天看<http defint ...
- Distilling the Knowledge in a Neural Network 论文笔记蒸馏
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/bryant_meng/article/ ...
- CentOS7 service network start命令启动时报错解决方法
service network start命令启动时报错: [root@localhost network-scripts]# service network start Starting netwo ...
- 面向Mobile device的CNN模型手工设计与NAS分析总结,MobileNet V1,V2,V3,Efficient,MNasNet以及Efficient network design
手工方法和NAS的高效网络模型设计总结与分析 这篇文章主要关注对于移动端,资源受限平台的高效神经网络设计(Manually)和搜索(NAS). 高效的CNN设计不只是用在服务器,云端,资源 ...
最新文章
- 七年磨一剑:Apache HBase 1.0正式发布
- python ansible_Ansible Python API | linux系统运维
- 【JS面试向】深入原型链之class的继承
- [Java]集合的小抄 Java初学者必备
- clover java,clover-clover软件 v3.4.3 官方版
- python用什么软件编程-python开发用什么编辑器
- python3 输出系统信息
- 【20211228】【信号处理】一文读懂信号处理中频谱混叠、栅栏效应、频谱泄露的产生原因和解决方法
- 【Python 小白到精通 | 课程笔记】第三章:数据处理就像侦探游戏(函数和包)
- 解密PDF---不支持双面打印打印机-------->双面打印操作
- 数学建模【系统评价决策模型(概论、案例分析-汽车选购、层次分析法、案例分析-职员晋升、动态加权综合评价法、案例分析-大气污染问题)】
- 【二极管】稳压二极管全面分析
- Spring+Mybatis+SpringMVC+Maven+MySql搭建实例
- 一点接入全网互通,企业上云就用它!
- 用图形编程编写国际象棋游戏
- AI会玩魔方了!全是自学,比任何人都快,包括机器人
- C语言编写程序求1到100的和,C语言菜鸟基础教程之求1到100的和
- 蓝牙(二)A2DP协议
- 软考系统架构师教材推荐和学习方法
- 用 Python 绘制个人足迹地图
热门文章
- 黑马程序员—————— 多线程
- 智能家居 (1) ——智能家居整体功能框架
- 全国计算机等级考试题库二级C操作题100套(第16套)
- python 3.8.0安卓_Python 3.8.0稳定版正式发布
- html5 txt文件上传,JavaScript html5利用FileReader实现上传功能
- python牛客网编程题_【面经】小米软件开发一面(python)面经 2020 2020
- android navigation bar高度,Android获取屏幕真实高度包含NavigationBar(底部虚拟按键)
- 数据库优化:SqlServer的with(nolock)关键字的用法介绍
- JDK 8 新特性 之 方法引用
- springbot 注入多实例