JZOJ 3886. 【长郡NOIP2014模拟10.22】道路维护
来源:互联网 发布:永久免费顶级域名注册 编辑:程序博客网 时间:2024/05/03 14:56
Description
最近徆多人投诉说C国的道路破损程度太大,以至亍无法通行
C国的政府徆重视这件事,但是最近财政有点紧,丌可能将所有的道路都进行维护,所以他们决定按照下述方案进行维护
将C国抽象成一个无向图,定义两个城市乊间的某条路径的破损程度为该条路径上所有边破损程度的最大值,定义两个城市乊间的破损程度为两个城市乊间所有路径破损程度的最小值
然后C国政府向你提问多次,有多少个城市对的破损程度丌超过L,他们将依照你的回答来决定到底怎样维护C国的道路
Input
第一行三个数n,m,q,表示图的点数和边数以及政府的询问数
以下m行每行三个数a,b,c,表示一条连接a,b且破损程度为c的无向边
接下来一行q个数
Output
一行q个数,对应每个询问,输出满足要求的城市对的数目
Sample Input
4 8 8
1 4 0
3 4 9
4 4 9
1 2 10
3 1 8
1 2 6
4 2 7
1 2 5
4 10 8 1 6 7 7 9
Sample Output
1 6 6 1 3 3 3 6
【友情提示】
一个城市对
Data Constraint
30%数据满足
60%数据满足
100%数据满足
Solution
这题显然也是并查集,并且考虑离线操作
将边权大小和询问的
Li 排序,用两个指针维护每进行到一个询问,就将连边的两端点并起来,同时并查集的大小也进行合并
中途累加答案数组即可,时间复杂度
O(MlogM)
Code
#include<cstdio>#include<algorithm>using namespace std;const int N=10001;struct data{int x,y,z;}a[N*10];struct query{int x,y;}b[N*10];int f[N],g[N],ans[N*10];inline int read(){ int data=0; char ch=0; while(ch<'0' || ch>'9') ch=getchar(); while(ch>='0' && ch<='9') data=data*10+ch-'0',ch=getchar(); return data;}inline bool cmp1(data x,data y){return x.z<y.z;}inline bool cmp2(query x,query y){return x.x<y.x;}inline int get(int x){return (f[x]==x)?x:f[x]=get(f[x]);}int main(){ int n=read(),m=read(),q=read(); for(int i=1;i<=n;i++) g[f[i]=i]=1; for(int i=1;i<=m;i++) a[i].x=read(),a[i].y=read(),a[i].z=read(); sort(a+1,a+1+m,cmp1); for(int i=1;i<=q;i++) b[b[i].y=i].x=read(); sort(b+1,b+1+q,cmp2); for(int i=1,j=0;i<=q;i++) { ans[b[i].y]=ans[b[i-1].y]; while(j<m && a[j+1].z<=b[i].x) { int f1=get(a[++j].x),f2=get(a[j].y); if(f1!=f2) { ans[b[i].y]+=g[f[f2]=f1]*g[f2]; g[f1]+=g[f2]; g[f2]=0; } } } for(int i=1;i<=q;i++) printf("%d ",ans[i]); return 0;}
1 0
- JZOJ 3886. 【长郡NOIP2014模拟10.22】道路维护
- 道路维护【长郡NOIP2014模拟10.22】
- 【长郡NOIP2014模拟10.22】道路维护
- 【JZOJ3886】【长郡NOIP2014模拟10.22】道路维护
- jzoj3886. 【长郡NOIP2014模拟10.22】道路维护
- JZOJ 3885. 【长郡NOIP2014模拟10.22】搞笑的代码
- JZOJ 3887. 【长郡NOIP2014模拟10.22】字符串查询
- JZOJ 3808. 【NOIP2014模拟8.25】道路值守
- JZOJ 3808 【NOIP2014模拟8.25】道路值守
- jzoj 3885. 【长郡NOIP2014模拟10.22】搞笑的代码 调和级数
- 【长郡NOIP2014模拟10.22】字符串查询
- JZOJ 3806. 【NOIP2014模拟8.24】小X 的道路修建
- JZOJ 3806 【NOIP2014模拟8.24】小X的道路修建
- 【JZOJ 3886】 道路维护
- jzoj 3886 道路维护
- JZOJ NOIP2014模拟 8.12
- JZOJ NOIP2014模拟 8.13
- JZOJ3885. 【长郡NOIP2014模拟10.22】搞笑的代码
- java的经典案例
- 接着搬砖
- 百练1007DNA排序
- mysql连表更新
- iOS (一) - UIWebView 与 WKWebView . 基本使用
- JZOJ 3886. 【长郡NOIP2014模拟10.22】道路维护
- 搭建Nginx(负载均衡)+Redis(Session共享)+Tomcat集群
- (二十四)剑指offer之整数中1出现的次数
- 组合数学 SPOJ INTSUB
- ubuntu下cacti安装配置
- C++ 获取文件夹内的文件名,判断文件(夹)是否存在的两个函数
- CNN卷积神经网络
- mysql8.0 zip安裝配置
- java模拟死锁事故现场