• 还是畅通工程


    Submit Status

    Description

     

    Input

     

    Output

     

    Sample Input

     

    Sample Output

     

    Hint

     

    Description

    某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。

    Input

    测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( < 100 );随后的N(N-1)/2行对应村庄间的距离,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间的距离。为简单起见,村庄从1到N编号。
    当N为0时,输入结束,该用例不被处理。

    Output

    对每个测试用例,在1行里输出最小的公路总长度。

    Sample Input

    3
    1 2 1
    1 3 2
    2 3 4
    4
    1 2 1
    1 3 4
    1 4 1
    2 3 3
    2 4 2
    3 4 5
    0

    Sample Output

    3
    5
    
    题目是中文就不说大致意思了
    思路:还是最小生成树,和我前面的都差不多,只不过在输入的时候注意一下,不用怎么改的。
    还是找到一条最小的就加上。知道找完最小生成树。
    代码如下:
    #include<cstdio>
    #include<cstring>
    using namespace std;
    const int minmize=10000000;
    int n,j,i,sum,maxmize,xx,s[1000][1000],lu[1000],v[1000];
    int prim(int v0)
    {
         for( j=0;j<n;j++)
         {
              lu[j]=s[v0][j];//赋初值,就是到第一个点的距离
              v[j]=v0;
         }
         for(j=0;j<n-1;j++)
         {
            maxmize=minmize;
            for( i=0;i<n;i++)
                 if(lu[i]&&maxmize>lu[i])
                 {
                      maxmize=lu[i];//找到最小边,加上
                      xx=i;
                 }
           sum=sum+lu[xx];
           lu[xx]=0;
           for(int l=0;l<n;l++)
                if(s[l][xx]<lu[l])
                {
                     lu[l]=s[l][xx];//更新数组,使其较小
                     v[l]=xx;
                }
         }
         return sum;
    }

    int main()
    {
         int a,b,c;
         while(scanf("%d",&n)&&n)
         {
              sum=0;
              memset(s,0,sizeof(s));
              for(int i=0;i<n*(n-1)/2;i++)
                   {
                        scanf("%d%d%d",&a,&b,&c);
                        s[a-1][b-1]=c;
                        s[b-1][a-1]=c;
                   }
                   printf("%d ",prim(1));
         }
         return 0;
    }


  • 相关阅读:
    一文详解ORB-SLAM3
    模块、进程、线程回调函数的逆向
    EPT的开启与处理
    VT MSR、CR、 Exception、#PF
    VT MTF VM-Exit
    VT技术对于除零异常的拦截与派发到3号中断
    异常与中断
    KVM_SET_SREGS 64位设置错误
    SQL注入实验学习笔记
    Pwn之简单patch
  • 原文地址:https://www.cnblogs.com/441179572qqcom/p/5719690.html
Copyright © 2020-2023  润新知