7-14 修建道路 (10 分)

简介: 7-14 修建道路 (10 分)

7-14 修建道路 (10 分)


N个村庄,从1到N编号,现在请您兴建一些路使得任何两个村庄彼此连通。我们称村庄A和B是连通的,当且仅当在A和B之间存在一条路,或者存在一个存在C,使得A和C之间有一条路,并且C和B是连通的。

已知在一些村庄之间已经有了一些路,您的工作是再兴建一些路,使得所有的村庄都是连通的,并且兴建的路的长度是最小的。


输入格式:


第一行是一个整数N(3<=N<=100),代表村庄的数目。后面的N行,第i行包含N个整数,这N个整数中的第j个整数是第i个村庄和第j个村庄之间的距离,距离值在[1,1000]之间。

然后是一个整数Q(0<=Q<=N*(N+1)/2)。后面给出Q行,每行包含两个整数a和b(1<=a<b<=N),表示在村庄a和b之间已经兴建了路。


输出格式:


输出一行仅有一个整数,表示为使所有的村庄连通需要新建公路的长度的最小值。


输入样例:


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


结尾无空行


输出样例:


179


结尾无空行


#include<bits/stdc++.h>
using namespace std;
const int N=10100;
int g[N][N],p[N];
int find(int x){
    if(x!=p[x])p[x]=find(find(p[x]));
    return p[x];
}
struct node{
    int x,y,w;
}s[N];
bool cmp(node a,node b){
    return a.w<b.w;
}
int main(){
    int n,cnt=0,ans=0;
    cin>>n;
    for(int i=1;i<=n;i++)p[i]=i;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            cin>>g[i][j];
    int m;
    cin>>m;
    while(m--){
        int a,b;
        cin>>a>>b;
        p[find(a)]=find(b);
        g[a][b]=g[b][a]=0;
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            if(g[i][j]){
                s[cnt].x=i;
                s[cnt].y=j;
                s[cnt].w=g[i][j];
                cnt++;
            }
        }
    }
    sort(s,s+cnt,cmp);
    for(int i=0;i<cnt;i++){
        if(find(s[i].x)!=find(s[i].y)&&g[s[i].x][s[i].y]){
            p[find(s[i].x)]=s[i].y;
            ans+=s[i].w;
        }
    }cout<<ans<<endl;
    return 0;
}


目录
相关文章
|
5月前
1044 火星数字 (20 分)
1044 火星数字 (20 分)
|
3月前
|
人工智能 算法
第一周算法设计与分析:C : 200和整数对之间的情缘
这篇文章介绍了解决算法问题"200和整数对之间的情缘"的方法,通过统计数组中每个数模200的余数,并计算每个同余类中数的组合数来找出所有满足条件的整数对(i, j),使得\( A_i - A_j \)是200的整数倍。
|
5月前
1036 跟奥巴马一起编程 (15 分)
1036 跟奥巴马一起编程 (15 分)
|
6月前
|
安全 算法 网络安全
国家信息安全水平考试NISP一级理论真题答案2
国家信息安全水平考试NISP一级理论真题答案2
|
6月前
|
安全 算法 网络安全
国家信息安全水平考试NISP一级理论真题答案1
国家信息安全水平考试NISP一级理论真题答案1
|
6月前
|
机器学习/深度学习 算法 Go
中科院医学2区7.4分|双疾病思路,学习一下cMAP
这篇研究通过综合生物信息学分析和机器学习,探讨了慢性肾脏病(CKD)与钙化性主动脉瓣疾病(CAVD)之间的关联,发现了17个潜在的诊断标志物,并构建了基于SLPI/MMP9的CAVD诊断列线图。该研究揭示了CKD相关CAVD的免疫途径,为未来血清诊断和治疗提供了新视角。文章发表在《Journal of Translational Medicine》上,IF为7.4。
145 0
拯救地球精英答案【逻辑题】
拯救地球精英答案【逻辑题】
63 0
|
安全
L3-009 长城 (30 分)(数学知识)
L3-009 长城 (30 分)(数学知识)
223 0
L3-009 长城 (30 分)(数学知识)
|
算法
TSP问题是指旅行家要旅行n个城市,要求各个城市经历且仅经历一次,并要求所走的路径最短。该问题又称为货郎担问题、邮递员问题、售货员问题,是图问题中广为人知的问题
TSP问题是指旅行家要旅行n个城市,要求各个城市经历且仅经历一次,并要求所走的路径最短。该问题又称为货郎担问题、邮递员问题、售货员问题,是图问题中广为人知的问题
234 0
|
存储 缓存 算法
2022年中国研究生数学建模竞赛C题 汽车制造涂装-总装缓存调序区调度优化问题思路分析
2022年中国研究生数学建模竞赛C题 汽车制造涂装-总装缓存调序区调度优化问题思路分析