zoukankan      html  css  js  c++  java
  • HDU 1102 Constructing Roads(最小生成树,基础题)

    注意标号要减一才为下标,还有已建设的路长可置为0

    #define  _CRT_SECURE_NO_WARNINGS
    
    #include <stdio.h>
    #include<string.h>
    #include <malloc.h>
    #include<stdlib.h>
    #include<algorithm>
    #include<iostream>
    using namespace std;
    
    #define M 110
    #define inf 999999999
    int mat[M][M];
    
    
    int prim(int n,int sta)
    {
        int mark[M],dis[M];
        int i,sum=0,j,flag;
        for(i=0;i<n;i++)
        {
            dis[i]=mat[sta][i];
            mark[i]=0;
        }
        mark[sta]=1;
        for(i=1;i<n;i++)
        {
            int minn=inf;
            for(j=0;j<n;j++)
            {
                if(dis[j]<minn&&mark[j]==0)
                        minn=dis[j],flag=j;
            }
            mark[flag]=1;
            sum+=dis[flag];
            for(j=0;j<n;j++)
            {
                if(dis[j]>mat[flag][j])
                    dis[j]=mat[flag][j];
            }
        }
        return sum;
    }
    
    
    int main()
    {
        int n,i,j,a,b,m;
        while(scanf("%d",&n)!=EOF)
        {
            for(i=0;i<n;i++)
            {
                for(j=0;j<n;j++)
                {
                    scanf("%d",&mat[i][j]);
                    
                }
            }
            scanf("%d",&m);        
            for(i=0;i<m;i++)
            {
                scanf("%d%d",&a,&b);//原来还是这里的问题,注意下标和标号还是有区别的,要减一
                mat[a-1][b-1]=mat[b-1][a-1]=0;//如果两村之间的路已经连接好,则他们之间的路程设为0
            }
            printf("%d
    ",prim(n,0));
        }
        return 0;
    }
    View Code
    一道又一道,好高兴!
  • 相关阅读:
    metaClass
    First-class citizen
    class-metaclass-Class vs. type
    eval-Evaluation
    编程语言:数据+算法;
    线程的关系
    线程的核心是算法,是面向过程的
    多线程与控制结构-面向过程
    线程安全-上线文-运行环境
    面向对象的语言学本质
  • 原文地址:https://www.cnblogs.com/laiba2004/p/3521007.html
Copyright © 2011-2022 走看看