POJ 2421 Constructing Roads——————最小生成树

用AI助手Cursor轻松自动生成流程图 通过 Cursor + Mermaid,我们可以快速、准确地自动生成流程图,上面演示的例子部分流程图可能比较丑,我们可以通过流程图软件导入Mermaid代码,然后手动进行微调就可以了,如果你对美观要求不是特别多,可以直接用,这将极大地提升代码可视化和架构设计的效率。 阅读详情

Constructing Roads

Language:Default
Constructing Roads
Time Limit: 2000MSMemory Limit: 65536K
Total Submissions: 27896Accepted: 12293

Description

There are N villages, which are numbered from 1 to N, and you should build some roads such that every two villages can connect to each other. We say two village A and B are connected, if and only if there is a road between A and B, or there exists a village C such that there is a road between A and C, and C and B are connected.

We know that there are already some roads between some villages and your job is the build some roads such that all the villages are connect and the length of all the roads built is minimum.

Input

The first line is an integer N (3 <= N <= 100), which is the number of villages. Then come N lines, the i-th of which contains N integers, and the j-th of these N integers is the distance (the distance should be an integer within [1, 1000]) between village i and village j.

Then there is an integer Q (0 <= Q <= N * (N + 1) / 2). Then come Q lines, each line contains two integers a and b (1 <= a < b <= N), which means the road between village a and village b has been built.

Output

You should output a line contains an integer, which is the length of all the roads to be built such that all the villages are connected, and this value is minimum.

Sample Input

3
0 990 692
990 0 179
692 179 0
1
1 2

Sample Output

179

Source


给的邻接矩阵
和已经连接的点,让求最小生成树


//#include<bits/stdc++.h>
#include<cstdio>
#include<vector>
#include<algorithm>

using namespace std;
const int MAXN=505;
int n,m,pre[MAXN];
struct Edge{
    int x,y,dis;
    Edge(){}
    Edge(int x1,int y1,int dis1)
    {
        x=x1; y=y1; dis=dis1;
    }
};
bool cmp(Edge a,Edge b)
{
    return a.dis<b.dis;
}
vector<Edge>d;
void init(){for(int i=1;i<=n;i++) pre[i]=i; }
int find(int x){return pre[x]==x?x:pre[x]=find(pre[x]); }
bool join(int x,int y)
{
    x=find(x);
    y=find(y);
    if(x!=y)
    {
        pre[x]=y;
        return true;
    }
    return false;
}


int main()
{

    while(~scanf("%d",&n))
    {
        d.clear();
        init();


        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
            {
                int x;
                scanf("%d",&x);
                if(i==j)                continue;
                d.push_back(Edge(i,j,x));
            }
       scanf("%d",&m);
        int a,b;
        while(m--)
        {
            scanf("%d %d",&a,&b);
            join(a,b);

        }
        sort(d.begin(),d.end(),cmp);
        int cnt=0,ans=0;
        for(int i=0;i<d.size();i++)
        {
            Edge e=d[i];
            if(join(e.x,e.y))
            {
                cnt++;
                ans+=e.dis;
            }
            if(cnt==n-1) break;
        }
        printf("%d\n",ans);
    }
    return 0;
}


PCIe中ACS知识小记 虚拟机内部的访问数据显而易见是带的GPA地址。而目前几乎所有的PCIe 设备都带ACS control,所以它们可以单独assign给不同的VM,但是随之而来的就是即使两个GPU同时assign给同一个VM,由于ACS的存在,他们之间也不会有真正的物理层面的P2P访问。每一个TLP都自带一个address(寻址类TLP),同时每一个endpoint,PCIe switch都自带一段BIOS配置的地址空间范围,一旦这个TLP的address落入某个设备的地址范围,那么这个TLP就属于这个设备并消费。 阅读详情

相关推荐

避坑指南:MTK平台Widevine L1密钥安装全流程详解(含SP META工具使用与Log分析)

本文详细解析了MTK平台实现Widevine L1认证的全流程,涵盖密钥申请、格式转换、安全烧录等关键步骤,特别针对Trustonic TEE环境下的SP META工具使用与日志分析提供实用指南。帮助开发者规避常见错误,确保DRM密钥安全部署,满足高端内容保护需求。

weixin_27219587的博客 476

课程练习四—problem A

Problem Description There are N villages, which are numbered from 1 to N, and you should build some roads such that every two villages can connect to each other. We say two village A and B are conn

二百五的春天 的博客 401

AI气象预报:数值模式融合与短临预警的工程实践

气象预报正经历从物理推演到数据驱动的认知范式转变。AI气象预报并非替代传统数值模式,而是通过数值模式融合弥补其在参数化误差、初值敏感性和计算效率上的固有瓶颈。其技术价值在于提升短临预警时效性与空间精度,支撑航空调度、电力调控、防洪应急等关键场景。实践中需兼顾物理一致性、可解释性与业务系统兼容性,避免纯黑箱建模带来的外推失效与不确定性缺失风险。本文聚焦AI作为超分辨率引擎、误差矫正器和短临加速器的三类落地路径,解析HEALPix投影、多尺度图建模、轻量级U-Net等核心适配方法。

weixin_28221501的博客 298

acm_Constructing Roads

题目: Problem Description There are N villages, which are numbered from 1 to N, and you should build some roads such that every two villages can connect to each other. We say two village A and B

xu_acm的博客 410

Synopsys工具filter命令:从数据筛选到高效IC设计的实战指南

在数字集成电路设计流程中,数据筛选与查询是工程师处理海量网表、时序报告和设计约束的核心需求。其原理在于通过声明式查询语言,直接对设计对象(如单元、网络、路径)的属性进行逻辑判断与模式匹配,从而精准定位目标。这种技术价值在于将工程师从繁琐的过程式脚本循环中解放出来,大幅提升代码可读性与运行效率,直接调用工具内置的高性能查询引擎。在实际应用场景中,它广泛用于物理与时序联合分析、层次化模块操作、动态约束生成以及自动化报告生成。本文聚焦于Synopsys工具链中filter命令的高阶用法,深入解析其表达式语法、正则

weixin_28007513的博客 577

科研绘图神器Origin中文版安装后还是英文?手把手教你三步搞定界面汉化

本文详细介绍了Origin软件安装后界面仍显示英文的解决方案,包括基础语言切换、注册表修改和序列号破解三种方法。通过逐步指导,帮助用户快速实现界面汉化,提升科研绘图效率。特别针对教育版用户提供了有效的语言锁定解除方案。

weixin_42524708的博客 1131

There are N villages, which are numbered from 1 to N, and you should build some roads such that ever

给出总共的村庄的编号,然后在下面的n行n列中,列举出来从i节点,到j节点的所有的权值 ,都为最后输入的那个数,之后在输入q表示有q组数据,表示接下来的q组数据表示已经联通,求出最后的最小生成树的最小权值。...

X131644的博客 578

OCR开发实战:如何用PaddleOCR C++版实现本地文字识别(附模型文件处理技巧)

本文详细介绍了如何使用PaddleOCR C++版实现本地文字识别,包括环境搭建、工程编译、运行时优化等全流程。重点讲解了在VS2019/VS2022环境下配置PaddleOCR的CPU推理性能优化技巧,以及模型文件处理的实际应用方法,帮助开发者高效完成OCR本地化部署。

devops8pract的博客 335

一些最小生成树的(水)题

HDU102 Problem Description There are N villages, which are numbered from 1 to N, and you should build some roads such that every two villages can connect to each other. We say two village A and B are connected, if and only if there is a road between A and

m0_51008760的博客 242

Java实战:绿盾加密文件批量解密工具Ldterm的实现与优化

本文详细介绍了基于Java开发的绿盾加密文件批量解密工具Ldterm的实现与优化过程。通过分析绿盾加密机制,结合Java流处理能力,实现了高效的文件解密方案,并分享了多线程处理、内存优化等性能提升技巧,适用于企业级数据迁移与备份场景。

weixin_29314405的博客 491

PreScan快速入门到精通第十一讲之PreScan道路标记,建筑物、抽象物体及交通标识

道路标记目的:路标是为了完善智能驾驶实验场景。用途:道路标记是附加在道路段上的。标记的大小{小、大}、颜色,以及相对于路段的位置和方向可以在属性编辑器中设置。也可以指定褪色和孔洞,类似于路段自动添加标记的配置。在GUI中的位置:作为一个预定义的库元素格式:NAMBOX: 汇编表中不知道。PreScan包含三个不同国家的标记:荷兰、日本和美国。可以通过在国家首选项中切换国家来隐藏或显示。附件道路标线附在路段上,并相对于路段原点定位。默认情况下,道路标记被固定在路段上,用小锚点表示。11.2 建筑物目...

小明师兄的博客 1804

hdu 1102 Constructing Roads (最小生成树)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1102 There are N villages, which are numbered from 1 to N, and you should build some roads such that every two villages can connect to each other. ...

Evildoer_llc的博客 311

前言:为什么要学习爬虫和逆向,该如何学习?

学习爬虫和逆向技术是当今数字化时代的重要技能,尤其在数据分析、安全研究、自动化工具开发等领域有广泛应用。以下是详细的学习理由、路径和方法:

数据知道的博客 1万+

POJ-2421 Constructing Roads(最小生成树)

题目传送门:(POJ-2421 Constructing Roads) 题目大意: 要修公路,输入一个n,表示n个村庄。接着输入n*n的矩阵,该图的邻接矩阵,然后输入一个q接下来的q行 每行包含两个数a,b,表示a、b这条边联通,就是已经有公路不用修了,要让所有村庄联通在一起问:修路最小代价? 分析: 根据题目输入构造邻接矩阵,然后把已经联通的村庄的距离设置为0,表示不用在修这条公路。...

weixin_34032621的博客 87

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

(最小生成树)POJ2421Constructing Roads

POJ2421Constructing Roads 题意&思路: 何以解忧,唯有做题。为什么总是想复杂。 给n个村庄和村庄之间的距离,有些村庄已经存在一条路。问使村庄之间两两连通最少需要修路的长度。 并查集和最小生成树,模板题。 代码: #include<iostream> #include<stdio.h> #include<stdlib.h> #in...

Z7784562的博客 285

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

POJ2421 Constructing Roads 最小生成树

修路 时限:2000MS 内存限制:65536K 提交总数:31810 接受:14215 描述 有N个村庄,编号从1到N,您应该修建一些道路,使每两个村庄可以相互连接。我们说两个村庄A和B是连通的,当且仅当A和B之间有一条道路,或者存在一个村庄C使得A和C之间有一条道路,并且C和B连通时。 我们知道,一些村庄之间已经存在一些道路,您的工作是建造一...

日拱一卒,功不唐捐 2867

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

POJ 2421 Constructing Roads 最小生成树

来源:http://poj.org/problem?id=2421 题意:还是给你n个点,然后求最小生成树。特殊之处在于有一些点之间已经连上了边。 思路:对于已经有边的点,特殊标记一下,加边的时候把这些边的权值赋值为0即可。这样就可以既保证这些边一定存在,又保证了所求的结果正确。 代码: #include #include #include #include #include u

3492

poj 2421 Constructing Roads(最小生成树)

Constructing Roads Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 22124   Accepted: 9431 Description There are N villages, which are numbered from 1 to N,

TUT我好菜啊 2558

POJ2421Constructing Roads 最小生成树

Constructing Roads Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 29366 Accepted: 13044 Description There are N villages, which are numbered from 1 to N, and you should build some roads ...

DouglasConnor的博客 258

POJ 2421 Constructing Roads(并查集+最小生成树)

题目链接:POJ 2421 Constructing Roads 题意: 给出n个点两两之间的权值,然后有m对a,b,表示a,b已经连通了。 问将这n个点都连通最少权值和是多少。 分析: 将m对已连通的点对用并查集合并,然后用Kruskal算法即可。 CODECODE://804K 47MS #include <iostream> #include <cstdio> #include <

ramay7 626

POJ 2421 Constructing Roads(最小生成树)

题意  在n个村庄之间修路使所有村庄连通  其中有些路已经修好了  求至少还需要修多长路 还是裸的最小生成树  修好的边权值为0就行咯 #include #include #include #include using namespace std; const int N = 105, M = 10050; int par[N], n, m, mat[N][N]; int ans; struc

Deng's site \# 988

POJ 2421 Constructing Roads 最小生成树 kruscal+并查集

Constructing Roads Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 18604   Accepted: 7683 Description There are N villages, which are numbered from 1 to N, a

kdwycz的刷题空间 791

POJ 2421 Constructing Roads 最小生成树

题意:求一个图的最小生成树的权值,其中有一些边是已经连通的 思路:在没连通的边中用kruskal求出最小生成树即可 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; t...

qq_42397248的博客 149

【最小生成树】POJ 2421 Constructing Roads

DescriptionThere are N villages, which are numbered from 1 to N, and you should build some roads such that every two villages can connect to each other. We say two village A and B are connected, if and

。。。。 293

POJ-2421 Constructing Roads (最小生成树)

题意:100个城市,城市之间已经有一些路了,现在需要再建一些使得所有城市联通,问最小代价。

hmc0411的博客 548

D - Constructing Roads POJ - 2421(最小生成树 kruskal)

D - Constructing Roads POJ - 2421(最小生成树 kruskal) There are N villages, which are numbered from 1 to N, and you should build some roads such that every two villages can connect to each other. We say ...

石旭先森的博客 285
上一篇: POJ1258 Agri-Net——————最小生成树
下一篇: POJ 1789Truck History——————最小生成树
陶鸿杰
博客等级 码龄9年 93粉丝 298原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值