当前位置: 首页 > wzjs >正文

苏州网站推手把手做网站页面

苏州网站推,手把手做网站页面,营销推广的目标,做图网站被告题目背景 NOIP2013 提高组 D1T3 题目描述 A 国有 n n n 座城市,编号从 1 1 1 到 n n n,城市之间有 m m m 条双向道路。每一条道路对车辆都有重量限制,简称限重。 现在有 q q q 辆货车在运输货物, 司机们想知道每辆车在不…

题目背景

NOIP2013 提高组 D1T3

题目描述

A 国有 n n n 座城市,编号从 1 1 1 n n n,城市之间有 m m m 条双向道路。每一条道路对车辆都有重量限制,简称限重。

现在有 q q q 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物。

输入格式

第一行有两个用一个空格隔开的整数 $ n,m$,表示 A 国有 $ n$ 座城市和 m m m 条道路。

接下来 m m m 行每行三个整数 x , y , z x, y, z x,y,z,每两个整数之间用一个空格隔开,表示从 $x $ 号城市到 $ y $ 号城市有一条限重为 z z z 的道路。
注意: x ≠ y x \neq y x=y,两座城市之间可能有多条道路 。

接下来一行有一个整数 q q q,表示有 q q q 辆货车需要运货。

接下来 q q q 行,每行两个整数 x , y x,y x,y,之间用一个空格隔开,表示一辆货车需要从 x x x 城市运输货物到 y y y 城市,保证 x ≠ y x \neq y x=y

输出格式

共有 q q q 行,每行一个整数,表示对于每一辆货车,它的最大载重是多少。
如果货车不能到达目的地,输出 − 1 -1 1

输入输出样例 #1

输入 #1

4 3
1 2 4
2 3 3
3 1 1
3
1 3
1 4
1 3

输出 #1

3
-1
3

说明/提示

对于 30 % 30\% 30% 的数据, 1 ≤ n < 1000 1 \le n < 1000 1n<1000 1 ≤ m < 10 , 000 1 \le m < 10,000 1m<10,000 1 ≤ q < 1000 1\le q< 1000 1q<1000

对于 60 % 60\% 60% 的数据, 1 ≤ n < 1000 1 \le n < 1000 1n<1000 1 ≤ m < 5 × 1 0 4 1 \le m < 5\times 10^4 1m<5×104 1 ≤ q < 1000 1 \le q< 1000 1q<1000

对于 100 % 100\% 100% 的数据, 1 ≤ n < 1 0 4 1 \le n < 10^4 1n<104 1 ≤ m < 5 × 1 0 4 1 \le m < 5\times 10^4 1m<5×104,$1 \le q< 3\times 10^4 $, 0 ≤ z ≤ 1 0 5 0 \le z \le 10^5 0z105

算法思路

  • 采用离线处理+并查集+启发式合并:
  • 离线处理:先读入所有查询,再统一处理。
  • 逆向 Kruskal 算法:按边权从大到小遍历边(类似最大生成树),逐步合并连通分量。
  • 查询匹配:每个顶点维护一个集合,存储包含该点的未解决查询编号。当合并两个连通分量时,- - 检查公共查询编号,这些查询的答案即为当前边的权值。
  • 启发式合并:将小集合合并到大集合,保证时间复杂度。

关键步骤

  • 边排序:将边按权值从小到大排序(后续逆序遍历即从大到小)。
  • 初始化:
  • 并查集初始化:每个顶点自成一个集合。
  • 为每个顶点创建查询集合:若查询 i i i 包含顶点 u u u,则将 i i i 加入 u u u 的集合。
  • 合并与匹配:
  • 逆序遍历每条边 ( u , v , w ) (u, v, w) (u,v,w)
  • 找到 u , v u,v u,v 所在集合的根 f u , f v f_u, f_v fu,fv
  • f u ≠ f v f_u \neq f_v fu=fv,则合并两集合(小集合并入大集合)。
  • 遍历小集合中的查询编号:
  • 若该编号也在大集合中,则当前边权 w w w 即为答案(删除该编号避免重复计算)。
  • 将剩余编号合并到大集合中。
  • 输出结果:若查询未匹配到答案(两点不连通),输出 − 1 -1 1

时间复杂度

  • 排序边: O ( m log ⁡ m ) O(m \log m) O(mlogm)
  • 并查集操作: O ( m ⋅ α ( n ) ) O(m \cdot \alpha(n)) O(mα(n))
  • 集合合并: O ( q log ⁡ q log ⁡ n ) O(q \log q \log n) O(qlogqlogn)(启发式合并)
  • 总复杂度: O ( m log ⁡ m + q log ⁡ q log ⁡ n ) O(m \log m + q \log q \log n) O(mlogm+qlogqlogn)

核心逻辑说明

  • 边权作用:当边 ( u , v , w ) (u,v,w) (u,v,w) 合并两个连通分量时, w w w 是当前连通分量的最小瓶颈值。
  • 查询匹配:若查询 i i i 的两个顶点分属被合并的两个分量,则 w w w 是答案(因为 w w w 是首次连通时的最大边权)。
  • 集合维护:删除已解决的查询,避免后续无效匹配,提升效率。

详细代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=5e4+5;
set<int>a[N];
int n,m,q,ans[N],a1,b,fa[N];
struct node{int x,y,w;friend bool operator <(node aa,node bb){return aa.w<bb.w;}
}h[N];
int find(int xx)
{if(fa[xx]==xx)return xx;return fa[xx]=find(fa[xx]);
}
signed main()
{ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);cin>>n>>m;for(int i=1;i<=n;i++)fa[i]=i;for(int i=1;i<=m;i++)cin>>h[i].x>>h[i].y>>h[i].w;sort(h+1,h+1+m);cin>>q;for(int i=1;i<=q;i++){cin>>a1>>b;a[a1].insert(i);a[b].insert(i);}for(int i=m;i>=1;i--){int x=h[i].x;int y=h[i].y;int w=h[i].w;int fx=find(x);int fy=find(y);if(fx==fy)continue;if(a[fx].size()<a[fy].size())swap(fx,fy);queue<int>q1;for(set<int>::iterator it=a[fy].begin();it!=a[fy].end();it++){if(a[fx].count(*it)){ans[*it]=w;q1.push(*it);}a[fx].insert(*it);}while(!q1.empty()){a[fx].erase(q1.front());q1.pop();}fa[fy]=fx;}for(int i=1;i<=q;i++)if(!ans[i])cout<<"-1"<<'\n';elsecout<<ans[i]<<'\n';return 0;
}

文章转载自:

http://hKapZhcU.rqjxc.cn
http://uXJnMRd6.rqjxc.cn
http://N5Gc8rcp.rqjxc.cn
http://lbxf0JHP.rqjxc.cn
http://lAlJ4bRD.rqjxc.cn
http://FuNBG2sE.rqjxc.cn
http://lNB0kPHK.rqjxc.cn
http://Xyz9Z0Gs.rqjxc.cn
http://i0HnzPuz.rqjxc.cn
http://c4Htr6Kv.rqjxc.cn
http://PMy2QuBH.rqjxc.cn
http://K6kvnvqm.rqjxc.cn
http://jbGGhdIs.rqjxc.cn
http://2n38dsvd.rqjxc.cn
http://FxvhoUYr.rqjxc.cn
http://kKoDw6F1.rqjxc.cn
http://iQlwDNrh.rqjxc.cn
http://JXUD0YmJ.rqjxc.cn
http://XdF0YQwW.rqjxc.cn
http://QDM24biK.rqjxc.cn
http://vlOXBgI2.rqjxc.cn
http://4Rvq0ip5.rqjxc.cn
http://SmxJQmit.rqjxc.cn
http://D0OF5HVN.rqjxc.cn
http://6yb8PO7S.rqjxc.cn
http://Vl3VZ40L.rqjxc.cn
http://nUACXlUz.rqjxc.cn
http://OWusSUhC.rqjxc.cn
http://mA25sBtt.rqjxc.cn
http://o9sxrqcT.rqjxc.cn
http://www.dtcms.com/wzjs/688787.html

相关文章:

  • 网站建设方案论文1500个人做 网站2019
  • 网站建设要求报告页面设计读书笔记1500
  • 苏州网站设计网站搭建网页设计模板之家
  • 苏州网站制作济南网站排名优化报价
  • 第一次开票网站建设怎么开寺院网站建设方案
  • 怎么做网站登录站网站页面
  • 网站建设需要哪些必备文件4399游戏官网
  • 计算机应用技术网站开发方向网站开发调查问卷
  • 网站建设及服务招标公告网站服务器免费申请
  • ps网站首页设计图制作教程怎么自学互联网技术
  • 广州好的做网站公司网站颜色搭配
  • 如何做设计网站页面建设网站的方法
  • 东莞专业做淘宝网站商城网站开发需要多少钱
  • 如何用jsp做简单的网站织梦网站app生成器
  • 专门做酒店网站wordpress相册页
  • 1688网站建设方案书模板jq 网站头部广告代码
  • 天台城乡规划建设局网站专业广告策划公司
  • 有关网站建设的图片营销师
  • 网站首页锚文本制作图片和视频一起的软件
  • 成都建设高端网站qq在线网页登录
  • 网站开发器wordpress手机认证登录
  • 购买了个网站源码 怎么建立吉安信息网
  • 酒店网站搜索引擎优化方案石柱县建设局网站
  • 艾艺的品牌网站设计wordpress电影主题会员
  • 建设部网站查造价师网站seo优化工具
  • 盐城专业做网站公司网站怎么建设
  • 不用开源程序怎么做网站sem推广方案怎么写
  • 网站建设 面试网页无法访问但是有网什么原因
  • 新网站怎么做谷歌推广呢拿p5.js做的网站
  • 网站设计自己申请做婚纱网站策划方案