POJ 2485 Highways:最小生成树 Prim

Highways:http://poj.org/problem?id=2485

大意:给你一个用邻接矩阵形式存储的有n个顶点的无向图,让你求它的最小生成树并求出在这个生成树里面最大的边的权值。

思路:用Prim求,判断条件改一下就行。

PS:dis数组初始化的时候用memset一直RE,希望有知道怎么回事的不吝赐教,谢了~

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/

#include <stdio.h>
#include <string.h>
#define INF 0x3f3f3f3f

int Map[510][510];
int dis[510];
int n, m;

int min(int a, int b)
{
    return a > b ? b : a;
}

int Prim()
{
    int Min_ele, Min_node;
    for(int i = 1; i <= n; i++)
    {
        dis[i] = INF;
    }
    ///这里如果用memset(dis, INF, sizeof(dis));的话会一直RE
    int r = 1;
    int Ans = 0;
    for(int i = 1; i < n; i++)
    {
        Min_ele = INF;
        dis[r] = -1;
        for(int j = 1; j <= n; j++)
        {
            if(j != r && dis[j] >= 0)
            {
                dis[j] = min(dis[j], Map[r][j]);
                if(dis[j] < Min_ele)
                {
                    Min_ele = dis[j];
                    Min_node = j;
                }
            }
        }
        r = Min_node;
        if(Min_ele > Ans)
            Ans = Min_ele;
    }
    return Ans;
}

void Solve()
{
    scanf("%d", &m);
    while(m--)
    {
        scanf("%d", &n);
        memset(Map, 0, sizeof(Map));
        for(int i = 1; i <= n; i++)
        {
            for(int j = 1; j <= n; j++)
            {
                scanf("%d", &Map[i][j]);
            }
        }
        printf("%d\n", Prim());
    }
}

int main()
{
    Solve();

    return 0;
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索int
, include
, return
, poj
, memset
, 求大神赐教
, prim
, 大神 求解救 谢了
, 生成
最小
poj2485、尼康2485、股市2485、2485原则、尼康2485镜头评测,以便于您获取更多的相关知识。

时间: 2024-12-01 21:19:33

POJ 2485 Highways:最小生成树 Prim的相关文章

poj 2485 Highways

点击打开链接poj 2485 思路:最小生成树+prime+最大边 分析:只要按照prime的算法的思路求出最大的边即可 代码: #include<iostream> #include<algorithm> #include<cstdio> #include<cstring> using namespace std; #define MAXN 510 #define INF 0xFFFFFFF int t , n , ans; int vis[MAXN];

POJ 1789 Truck History:最小生成树 Prim

Truck History:http://poj.org/problem?id=1789 大意:用一个7位的string代表一个编号,两个编号之间的距离代表这两个编号之间不同字母的个数.一个编号只能由另一个编号变化的来,变化的字母的数量就是这两个编号之间相应的距离,现在要找出一个变化方案,使得总代价最小,也就是距离之和最小. 思路:将每个字符串当成一个节点,求出每个节点之间需要变化的次数为边的权值,用Prim建立最小生成树(稠密图). 更多精彩内容:http://www.bianceng.cnh

HDU 2489 Minimal Ratio Tree (DFS枚举+最小生成树Prim)

链接: HDU : http://acm.hdu.edu.cn/showproblem.php?pid=2489 POJ  : http://poj.org/problem?id=3925 题目: Problem Description For a tree, which nodes and edges are all weighted, the ratio of it is calculated according to the following equation. Given a comp

POJ 1258 Agri-Net:最小生成树 Prim 模版题

Agri-Net:http://poj.org/problem?id=1258 大意:新镇长竞选宣言就是将网络带到每一个农场,给出农场个数,两两之间建光缆的耗费,求所有都联通的最小耗费. 思路:最小生成树,因为边比较稠密,用Prim做. PS:对于比较稠密的图,用Prim,对于比较稀疏的图,用 Kruskal.Kruskal是找边的过程,稀疏的话会比较快. 更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/

poj 1751 Highways

点击打开链接poj 1751 思路:最小生成树+prime 分析:只要按照prime的思路求出所有的边,然后输出的时候判断是否是已经建好的即可. 注意:可能出现已经把所有的边都建好的情况,这个时候不用输出 代码: #include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #include<cmath> using namespace std; #define

poj 1751 Highways MST

   水到家的一道题,居然WA了3次--没注意到距离是double--没有输出的话要输出一行空行  /* author:jxy lang:C/C++ university:China,Xidian University **If you need to reprint,please indicate the source** */ #include <iostream> #include <cstdio> #include <cstdlib> #include <

poj 2128 Highways

真是一道坑爹的题目,题目其实说的不是很清晰... WA了2次... [题意] 在一条单向公路上,有n个村庄,第i个村庄只能到i以后的村庄,而不能到i之前的村庄(因为是单行道).新村长要建两条新路,使得各个村庄之间都能走通(一条反向的就可以,为什么要建两条?题目说了,只建一条不足矣增加自己的政绩) [思路] 找出所有路段中最短的,加上原来的总长,就是答案.有一点要注意,题目说两条路的4个端点必须不同,因此要排除端点重合的问题.另外,n=2和n=3是无解的. 我们知道要满足条件,那么我们就必定使1~

最小生成树【完结】

第一题 hdu 1232 畅通工程 点击打开hdu 1232 思路:模板题 点击查看代码 第二题 hdu 1233 还是畅通工程 点击打开hdu 1233 思路:模板题 点击查看代码 第三题 uva 10034 Freckles 点击打开uva 10034 思路:模板题 点击查看代码 第四题 uva 10397 Connect the Campus 点击打开uva 10397 思路:模板题 点击查看代码 第五题 uva 10369 Arctic Network 点击打开uva 10369 思路:

poj 3522 Slim Span:枚举+最小生成树

链接: http://poj.org/problem?id=3522 题目: Slim Span Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 4962   Accepted: 2587 Description Given an undirected weighted graph G, you should find one of spanning trees specified as follows. The grap