• poj 2485


    题意://岛要修路,这个岛上有n个城市,要求修完路后,各城市之间可以相互到达,且修的总路程最短  求所有道路的最长的一段路程

    思路:Kruskal 算法简单的应用

    #include<iostream>
    #include<cstring>
    using namespace std;
    int map[501][501];
    int dist[501];
    int s[501];
    int n;
    void Krudkal()
    {
        int i,j;
        int max=0;
        memset(s,0,sizeof(s));
        for(i=1;i<=n;i++)
            dist[i]=map[1][i];
        s[1]=1;
        for(i=1;i<n;i++)
        {
            int v=-1;
            int min=999999999;
            for(j=1;j<=n;j++)
                if(dist[j]<min&&!s[j])
                {
                    min=dist[j];
                    v=j;
                }
            if(v==-1) break;
            if(min>max) max=min;
            s[v]=1;
            //sum+=dist[v];
            dist[v]=0;
            for(j=1;j<=n;j++)
            {
                if(dist[j]>map[v][j])
                    dist[j]=map[v][j];
            }
        }
        cout<<max<<endl;
    }
    int min(int x,int y)
    {
        if(x<y) return x;
        return y;
    }
    int main()
    {
        int t,i,j;
        //cin>>t;
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d",&n);
            for(i=1;i<=n;i++)
                for(j=1;j<=n;j++)
                {
                    scanf("%d",&map[i][j]);
                }
            for(i=1;i<=n;i++)
                for(j=1;j<=n;j++)
                {
                    int e=min(map[i][j],map[j][i]);
                    map[i][j]=e;
                    map[j][i]=e; 
                }
            Krudkal();
        }
        return 0;
    }
        
  • 相关阅读:
    嵌入式(C)笔试题
    经典C语言编程注意点
    深拷贝和浅拷贝(一)
    拷贝构造函数
    树与二叉树的概念
    线性数据结构
    排序算法_冒泡排序
    排序算法_选择排序
    机器学习_支持向量机
    数据库_11_1~10总结回顾+奇怪的NULL
  • 原文地址:https://www.cnblogs.com/zhangdashuai/p/3774697.html
Copyright © 2020-2023  润新知