【JZOJ 3886】 道路维护
来源:互联网 发布:淘宝客服节假日放假吗 编辑:程序博客网 时间:2024/05/22 11:39
Description
最近徆多人投诉说C国的道路破损程度太大,以至亍无法通行
C国的政府徆重视这件事,但是最近财政有点紧,丌可能将所有的道路都进行维护,所以他们决定按照下述方案进行维护
将C国抽象成一个无向图,定义两个城市乊间的某条路径的破损程度为该条路径上所有边破损程度的最大值,定义两个城市乊间的破损程度为两个城市乊间所有路径破损程度的最小值
然后C国政府向你提问多次,有多少个城市对的破损程度丌超过L,他们将依照你的回答来决定到底怎样维护C国的道路
100%数据满足n≤10^4,m,q≤10^5,0≤c,Li≤10^9
Analysis
这题很水,我比赛时切了
离线,询问L动态加入比L小的边,维护并查集计算加入一条边增加的连通点对数
Code
#include<cstdio>#include<algorithm>#define fo(i,a,b) for(int i=a;i<=b;i++)using namespace std;const int N=10010,M=100010;struct edge{ int x,y,z;}a[M];struct ask{ int x,id;}b[M];int n,m,q,ans[M],f[N],sum[N];bool cmp(edge a,edge b){ return a.z<b.z;}bool cmpask(ask a,ask b){ return a.x<b.x;}int getfa(int v){ if(f[v]==v) return v; sum[f[v]]+=sum[v]; sum[v]=0; return f[v]=getfa(f[v]);}int main(){ scanf("%d %d %d",&n,&m,&q); fo(i,1,m) scanf("%d %d %d",&a[i].x,&a[i].y,&a[i].z); sort(a+1,a+m+1,cmp); fo(i,1,q) scanf("%d",&b[i].x),b[i].id=i; sort(b+1,b+q+1,cmpask); fo(i,1,n) f[i]=i,sum[i]=1; int j=1,tot=0; fo(i,1,q) { int x=b[i].x; while(a[j].z<=x && j<=m) { int u=a[j].x,v=a[j].y; int fu=getfa(u),fv=getfa(v); if(fu!=fv) { tot+=sum[fu]*sum[fv]; f[fv]=fu; getfa(fv); } j++; } ans[b[i].id]=tot; } fo(i,1,q) printf("%d ",ans[i]); return 0;}
0 0
- 【JZOJ 3886】 道路维护
- jzoj 3886 道路维护
- JZOJ 3886. 【长郡NOIP2014模拟10.22】道路维护
- JZOJ 4810. 道路规划
- 【JZOJ 4810】道路规划
- 【JZOJ 3808】 道路值守
- JZOJ 3808. 道路值守
- 【JZOJ 3808】道路值守
- 【JZOJ3886】道路维护
- #192. 道路维护
- jzoj P1663【AHOI2009】维护序列
- JZOJ 2413. 【NOI2005】维护数列
- 【挖坑记】JZOJ 4729 道路修建
- JZOJ 3808. 【NOIP2014模拟8.25】道路值守
- 【JZOJ 3806】 小X 的道路修建
- 【JZOJ 3806】小X 的道路修建
- JZOJ 3808 【NOIP2014模拟8.25】道路值守
- 【BZOJ 2453】【JZOJ 2491】维护队列
- 【NOJ2024】入栈序列和出栈序列
- JZOJ 3885. 【长郡NOIP2014模拟10.22】搞笑的代码
- 01_语言与硬件(寄存器、存储器、汇编语言)
- 放下金箍,如何救你;戴上金箍,如何爱你。
- C语言复习手记
- 【JZOJ 3886】 道路维护
- 开发工具的使用1
- 不带缓存的文件I/O操作
- A对象GameObject是否面向B对象的判断
- 关于SQL视图的创建和使用方法
- TLS 握手优化详解
- [leetcode111].Minimum Depth of Binary Tree
- jQuery mobile loading设置/清除
- resiprocate-repro编译和运行