HDU 5441 Travel (带权并查集 + 离线操作)

解锁笔记智能对话:手把手配置 Obsidian Copilot 插件与硅基流动模型 本文详细介绍了如何为Obsidian笔记软件配置Copilot插件,并接入硅基流动AI模型,从而为个人知识库添加智能对话能力。通过手把手教程,指导用户完成插件安装、API Key获取、模型配置及索引构建,最终实现基于个人笔记内容的深度语义问答,提升知识管理效率。 阅读详情

Travel

Problem Description
Jack likes to travel around the world, but he doesn’t like to wait. Now, he is traveling in the Undirected Kingdom. There aren cities and m bidirectional roads connecting the cities. Jack hates waiting too long on the bus, but he can rest at every city. Jack can only stand staying on the bus for a limited time and will go berserk after that. Assuming you know the time it takes to go from one city to another and that the time Jack can stand staying on a bus is x minutes, how many pairs of city (a,b) are there that Jack can travel from city a to b without going berserk?
 

Input
The first line contains one integerT,T≤5, which represents the number of test case.

For each test case, the first line consists of three integers n,m and q where n≤20000,m≤100000,q≤5000. The Undirected Kingdom has n cities and m bidirectional roads, and there are q queries.

Each of the following m lines consists of three integers a,b and d where a,b∈{1,...,n} and d≤100000. It takes Jack d minutes to travel from city a to city b and vice versa.

Then q lines follow. Each of them is a query consisting of an integer x where x is the time limit before Jack goes berserk.

 

Output
You should print q lines for each test case. Each of them contains one integer as the number of pair of cities(a,b) which Jack may travel from a to b within the time limit x.

Note that (a,b) and (b,a) are counted as different pairs and a and b must be different cities.
 

Sample Input
1 5 5 3 2 3 6334 1 5 15724 3 5 5705 4 3 12382 1 3 21726 6000 10000 13000
 

Sample Output
2 6 12
 
【思路分析】
   参照别人的思路写的。。。这类题一定要多加训练。

代码如下:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;

const int maxn = 2e4 + 50;
const int maxm = 1e5 + 50;
const int maxq = 5e3 + 50;
int n,m,q,sum;
int sets[maxn],ans[maxn],number[maxn];

struct Edge
{
    int u,v,w;
    Edge()
    {

    }
    Edge(int u,int v,int w) : u(u),v(v),w(w)
    {

    }
    bool operator < (const Edge &e) const
    {
        return w < e.w;
    }

}edge[maxm];
struct Query
{
    int val,index;
    bool operator < (const Query &q) const
    {
        return val < q.val;
    }
}query[maxq];

void init()
{
    sum = 0;
    scanf("%d %d %d",&n,&m,&q);
    for(int i = 1;i <= n;i++)
    {
        sets[i] = i;
        number[i] = 1;
    }
    for(int i = 1;i <= m;i++)
    {
        scanf("%d %d %d",&edge[i].u,&edge[i].v,&edge[i].w);
    }
    for(int i = 1;i <= q;i++)
    {
        scanf("%d",&query[i].val);
        query[i].index = i;
    }
    sort(edge + 1,edge + m + 1);
    sort(query + 1,query + q + 1);
}
int finding(int x)
{
    return sets[x] = (sets[x] == x ? x : finding(sets[x]));
}
void merging(int a,int b)
{
    int p1 = finding(a);
    int p2 = finding(b);
    if(p1 != p2)
    {
        int x = number[p1];
        int y = number[p2];
        sum -= x * (x - 1);//即x个结点两两之间边的权值满足条件的点对数
        sum -= y * (y - 1);
        sets[p1] = p2;
        number[p2] += number[p1];
        number[p1] = 0;//以上三步将集合a并入集合b
        sum += (number[p2]) * (number[p2] - 1);
    }
}
void solve()
{
    int num = 1;
    for(int i = 1;i <= q;i++)
    {
        while(num <= m && edge[num].w <= query[i].val)//权值不大于q值时进行合并
        {
            merging(edge[num].u,edge[num].v);
            num++;
        }
        ans[query[i].index] = sum;
    }
    for(int i = 1;i <= q;i++)
        printf("%d\n",ans[i]);
}
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        init();
        solve();
    }
    return 0;
}


C++语言程序设计教程第4版杨进才沈显君课后习题答案解析 为了更好地学习这门课程,我尝试在网上寻找一些学习资料和参考书籍,但效果并不是很理想。因此,我希望能有一些学长学姐或者是有经验的程序员能够分享一些学习经验和方法,让我更好地掌握这门课程。学习过程中,我发现这本书的内容非常丰富,讲解也非常详细,对于像我这样编程基础薄弱的学生来说,是一本非常实用的教材。同时,我也希望有经验的程序员能够推荐一些适合初学者的C++语言学习资料和工具,以便我能更好地学习和掌握这门课程。总之,希望能得到大家的帮助和支持,让我更好地学习和掌握C++语言程序设计。主 编: 杨进才,沈显君。 阅读详情

相关推荐

思科华三设备组网思科生成树PVST发BPDU导致全网闪断

一、故障现象 1.思科PVST BPDU报文导致全网闪断。 2.光衰低时不同品牌网络设备无法兼容导致接入交换机中断。 二、网络拓扑 图1 网络拓扑图 组网结构为H3C汇聚,接入交换机有思科,也有H3C,而且与汇聚直连的接入交换机下面串接了较多的交换机,或者hub。 三、排查思路 1.回忆一下最近做了什么事情,什么时候开始出的问题。 将网络汇聚交换机从思科换为H3C,H3C汇聚和思科接入对接出问题...

Silence_always的博客 7478

Travel HDU - 5441(技巧题,并查集)

题目 Jack likes to travel around the world, but he doesn’t like to wait. Now, he is traveling in the Undirected Kingdom. There are n cities and m bidirectional roads connecting the cities. Jack hate...

sunmaoxiang的博客 492

Truncated SVD for faster dection

Truncated SVD方法最先被提出在《Fast R-CNN》论文中,用于降低全连接层的运算量,提升模型的速度。在卷积神经网络的分类任务中,FC层的运算速度远远大于CONV层,而在Fast R-CNN的目标检测任务中,大多数的运算时间发生在FC 的运算中,是因为针对每张输入图片,只进行一次卷积操作,而要对生成的Region Proposal,大致两千个,进行全连接操作进行分类与Bounding...

weixin_35747666的博客 1535

【HDU 5441】Travel

Jack likes to travel around the world, but he doesn’t like to wait. Now, he is traveling in the Undirected Kingdom. There arenncities andmmbidirectional roads connecting the cities. Jack hat...

词庸 549

Windows下用Caddy一键搞定LiveKit本地HTTPS部署(含自签名证书避坑指南)

本文详细介绍了在Windows本地开发环境中,如何利用Caddy服务器一键部署支持HTTPS和WSS的LiveKit实时通信服务。文章重点解决了自签名证书的生成与配置难题,提供了完整的避坑指南和防火墙设置,帮助开发者快速搭建安全的WebRTC测试环境,实现局域网内的实时音视频互动。

weixin_29274969的博客 583

新手必看:如何用T265和ROS实现无人机室内精准定位(附PX4参数配置)

本文详细介绍了如何使用Intel Realsense T265和ROS实现无人机室内精准定位,包括硬件准备、ROS数据流架构设计、PX4参数配置及系统验证。特别针对视觉SLAM技术在室内环境中的应用,提供了从零搭建到进阶优化的全流程解析,适合无人机开发新手快速上手。

weixin_30642561的博客 404

HDU - 5441(并查集)

TravelJack likes to travel around the world, but he doesn’t like to wait. Now, he is traveling in the Undirected Kingdom. There are nn cities and mm bidirectional roads connecting the cities. Jack hate

siyu 364

单细胞测序流程(八)单细胞的marker基因转化和​GO富集分析

系列文章目录 单细胞测序流程(一)简介与数据下载 单细胞测序流程(二)数据整理 单细胞测序流程(三)质控和数据过滤——Seurat包分析,小提琴图和基因离差散点图 单细胞测序流程(四)主成分分析——PCA 单细胞测序流程(五)t-sne聚类分析和寻找marker基因 单细胞测序流程(六)单细胞的细胞类型的注释 单细胞测序流程(七)单细胞的细胞类型轨迹分析———————————————— 本期主讲内容——单细胞的maeker基因转化和​富集分析 marker基因转化是为了将基因的id和基.

qq_45478665的博客 1万+

hdu 5441 Travel(带权并查集)

Problem Description Jack likes to travel around the world, but he doesn’t like to wait. Now, he is traveling in the Undirected Kingdom. There are n cities and m bidirectional roads connecting t

ZAQ的博客 2873

【模型实战】MiMo-VL-7B讲解与实战

维度成绩MMMU70.6(图像理解最难测试之一)VideoMME70.8(视频理解标杆)59.4(超越78B参数模型)56.1(超过专用GUI模型)Elo评分开源VLM排名第一(7B~72B)社区热度过去一个月下载超1,600次(RL+SFT)📌一句话概括MiMo-VL 是目前性能最强、推理最稳、体验最佳、生态最全的7B级开源视觉语言模型。

m0_47867638的博客 1199

第五天 Labview数据记录(5.4 EXCEL文件读写)

Excel 文件读写在数据处理、自动化办公、数据分析等领域具有重要的意义。以下是 Excel 文件读写的主要应用场景和意义:1. 数据管理和整理;2. 自动化办公;3. 数据分析和可视化;4. 系统集成;5. 报表生成;6. 教育和培训;7. 实际应用场景。Excel 文件读写的意义在于提高数据处理的效率、减少人工操作、支持自动化办公、促进数据分析和可视化,以及实现系统之间的数据交互。无论是企业、组织还是个人,都可以通过 Excel 文件读写实现数据的高效管理和利用。

weixin_38637405的博客 1263

HDU 5441 Travel (离线处理+并查集)

Travel Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 2914    Accepted Submission(s): 998 Problem Description Jack likes to travel a

Interstellar_的博客 708

Rockchip开发系列 - 3.4.GPIO扩展芯片AW95xx和PCA953X(2)

Rockchip开发系列 - 3.3.GPIO扩展芯片AW95xx和PCA953X(2)

fulinux的博客 1003

HDU 5441 Travel 并查集

HDU 5441 Travel   题意:一张无向图,q个查询,对于每个x,有多少对点之间的路径中最长的一条路不大于x。 思路:比赛时王秋平写的,我补下题。这题也比较简单,将边排序,从小到大加到并查集,对查询也排序,从小到大对于每个查询把不大于x的边加到并查集,用cnt[y]记录以y为根的连通块有多少节点,那么在连通块发生 变化时,ans=2 * cnt[x] * cnt[y]  

Macan - 生活点滴 377

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

hdu 5441 Travel(生成树)

题目链接:hdu 5441 Travel 类似与最小生成树的算法,将边和询问分别按照权值排序,每次枚举一个询问,将小于该询问的边全部链接,并且计算ans。 #include #include #include #include using namespace std; typedef long long ll; const int maxn = 20005; con

不慌不忙、不急不躁 1088

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

hdu 5441 Travel 排序 并查集

Travel Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 2149    Accepted Submission(s): 740 Problem Description Jack likes to trav

G.D.Retop的专栏 499

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

hdu5441 Travel

题目TravelProblem Description Jack likes to travel around the world, but he doesn’t like to wait. Now, he is traveling in the Undirected Kingdom. There are n cities and m bidirectional roads connecting

痕 1200

HDU 5441 Travel (带权并查集 离线)

题目 HDU 5441 Travel 题意 n个点,m条边,每条边权值val q次询问,每次有一个值v,将图中所有小于v的边标记出来组成新图,求里面有多少个点对可以相互到达(a -> b 和 b -> a 算两个) 解法 离线并查集,记录每个集合里面点的个数,每次合并两个点数为x, y的集合,对ans的贡献为 \((x+y)\*(x+y-1) - x\*(x-1) - y\*(y-1)...

weixin_30642305的博客 119

HDU 5441 Travel

HDU 5441 Travel #include #include #include #include #include #include #include #define maxn 100005 #define INF 0x3fffffff #define ll __int64 #define mod 10000007 #define N 20005 #define M 100005 usin

mitic的博客 418

HDU 5441 Travel(离线操作,并查集)

题目链接:HDU 5441 Travel 题目大意: 有一个n个点的无向图,给出m条边的边权,给出q次询问,每次给出一个值,求用到所有边权不大于这个值的边的情况下,能够互相到达的点对的个数(自己到自己不算) (a,b) (b,a) 不同当且仅当a!=b 当时做的时候思路很快就想出来了,就是每次把满足条件的点分成不同的集合,每个集合的点互相可达,每个集合正好构成无向完全图

Winjourn的专栏 652

hdu 5441 Travel(带权并查集)

题目:http://acm.hdu.edu.cn/showproblem.php?pid=5441 Travel Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 1586    Accepted Submission(s

theArcticOcean 764

hdu 5441 Travel 离线带权并查集

转自:http://www.cnblogs.com/qscqesze/p/4805266.html题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5441 Description Jack likes to travel around the world, but he doesn’t like to wait. Now, he is trave

行云出岫 247

hdu 5441 Travel(Kruskal+离线)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5441 题意: 给定N个顶点,M条边的一个无向图,Q个询问。 对于每个询问x,从a,b的路径上各边的最大权值小于x,可以记为有序对, 求这个图里面有多少个这样的有序对。 解题思路:kruskal思想+离线。首先把边从小到大排序,对于某个限制limit,如果边小于等于limit,则表示这条边是

hexianhao的博客 618

离线+并查集 hdu5441 Travel

传送门:点击打开链接 题意:给n个点,m条有权值的无向边,求存在多少个点(a,b) (a!=b),使得a到b至少有一条路径上的边最大权值小于等于x 思路:将边读入排序,再先将x排序,初始化并查集,用并查集维护一个联通分量中的点的个数,让ans等于0 按照边的权值从小到大添加边到图中,首先考虑如何更新ans 添加的某条边如果是(u,v),如果u和v本身就连通了,那么再添加这条边并不会改变an

qwb的博客 995

hdu-5441-Travel-带权并查集

题意  给你n个城市m个边,每条边有一权值,表示路费 如果给出一笔钱,钱大于路费则表示该条路可以通过 通过这条路 则代表 点 (a,b)  和(b,a)是合法的点,合法的对数为2 k次查询,每次查询给出一笔钱,求该笔钱能走过的所有点的合法对数 对输入的边按权值排序,对输入的钱数按权值排序 对第一笔钱,把权值比钱小的边 全都加到一个并查集, 设两端点为t1,t2 i

缺氧 825

hdu 5441 长春区域赛网络赛 1005 Travel(并查集)

题目链接:hdu 5441题目大意:有一个n个点的无向图,给出m条边的边权,给出q次询问,每次给出一个值,求用到所有边权不大于这个值的边的情况下,能够互相到达的点对的个数(自己到自己不算)题目分析: 首先我们对于边按照边权从小到大排序,对于询问按照值从小到大排序。 枚举每次询问,从前到后扫描边,如果下一条边的边权大于当前的询问的值,那么停止,利用并查集记录每个联通块的点的个数。 每次如果某两个联通块

llin-黎辰 2411
上一篇: POJ 3130 How I Mathematician Wonder What You Are!(半平面交求多边形的核)
下一篇: UVA 10881 Piotr's Ants
Spectacules
博客等级 码龄12年 2粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值