zoukankan      html  css  js  c++  java
  • POJ

    题意:有一个村庄网络(图),求该图的最小生成树

    首先输入n代表n个村庄,接下来的n-1行,每行首先输入一个大写字母表示一个村庄,接着输入一个数字num,

    表示和村庄连接的点的个数     接下来输入num对大写字母和数字,表示该村庄到另一个村庄的距离。比如:题目的第二组数组

    3
    A 2 B 10 C 40
    B 1 C 20

    表示:有三个村庄

    A村庄有两个连通的点B C   其中A--->B  距离10   A--->C  距离40

    B村庄有一个联通的点C    B--->C   距离20

    代码:(prim)

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    using namespace std;
    const int MAX=50;
    const int INF=0x3f3f3f3f; 
    int n,val,num;
    int dist[MAX];
    bool vis[MAX];
    char st[5],en[5];
    int map[MAX][MAX];
    int prim()
    {
        for(int i=0;i<n;i++)
        {
            dist[i]=INF;
            vis[i]=false;
        }
        int min,ans=0,pos;
        dist[0]=0;
        for(int i=0;i<n;i++)
        {
            min=INF;
            for(int j=0;j<n;j++)
            {
                if(!vis[j]&&dist[j]<min)
                {
                    min=dist[j];
                    pos=j;
                }
            }
                vis[pos]=true;
                ans+=min;
                for(int j=0;j<n;j++)
                {
                    if(!vis[j]&&dist[j]>map[pos][j])
                        dist[j]=map[pos][j];
                }            
        }
        return ans;
    }
    int main()
    {
        while(scanf("%d",&n)!=EOF&&n)
        {
            for(int i=0;i<n;i++)                    //初始化 
                for(int j=0;j<n;j++)
                    map[i][j]=INF;
            for(int i=0;i<n-1;i++)
            {
                scanf("%s %d",st,&num);
                while(num--)
                {
                    scanf("%s%d",en,&val);            //将点ABC 用012代替,构建邻接矩阵 
                    map[st[0]-'A'][en[0]-'A']=map[en[0]-'A'][st[0]-'A']=val;
                }
            }
            int ans=prim();
            printf("%d
    ",ans);
        }
        return 0;
    }
  • 相关阅读:
    centos7安装jdk8
    centos7安装mysql5.7.31
    docker打包,运行springboot
    centos7安装docker
    ps学习记录
    Html的学习(二)
    tensorflow C++接口调用图像分类pb模型代码
    tensorflow C++接口调用目标检测pb模型代码
    ubuntu14 编译tensorflow C++ 接口
    Python opencv计算批量图片的BGR各自的均值
  • 原文地址:https://www.cnblogs.com/LjwCarrot/p/9488659.html
Copyright © 2011-2022 走看看