杭电ACM1233(prim)

原创 2015年11月18日 19:49:43

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1233
题目大意:中文题目
解题思路:简单的最小生成树问题,可以用Kruskal或者prim算法解决,这里用prim算法。
AC代码:

#include <iostream>
#include <string.h>
using namespace std;
#define INF 2000000
int prim(int matrix[105][105],int n)
{
    bool visited[105];
    int result=0;
    int p[n];
    for(int i=1;i<=n;i++)
    {
        p[i] = matrix[1][i];
    }
    memset(visited,0,sizeof(visited));
    for(int i=1;i<=n;i++)
    {
        int min = INF;
        int index=0;
        for(int j=1;j<=n;j++)
        {
            if(p[j]<min&&visited[j]==0)
            {
                min = p[j];
                index = j;
            }   
        }
        visited[index] = 1;
        result+=p[index];
        for(int j=1;j<=n;j++)
        {
            if(!visited[j])p[j] = matrix[index][j]<p[j]?matrix[index][j]:p[j];
        }
    }
    return result;
}

int main()
{
    int n;
    int count;
    int a,b,c;
    int matrix[105][105];
    while(cin>>n)
    {
        if(n==0)break;
        count=(n-1)*n/2;
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
            {
                matrix[i][j] = INF;
                if(i==j)matrix[i][j] = 0;
            }
        }
        for(int i=1;i<=count;i++)
        {
            cin>>a>>b>>c;
            matrix[a][b] = matrix[b][a] = c;
        }
        if(n==1)cout<<0<<endl;
        else cout<<prim(matrix,n)<<endl;
    }
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

hdu1233 还是畅通工程(两种基本最小生成树算法)

http://acm.hdu.edu.cn/showproblem.php?pid=1233 题意:中文题。 思路:最小生成树入门题。入门教程(算是看了一点),还是挑战上面的思路清晰点...
  • Flynn_curry
  • Flynn_curry
  • 2016年02月04日 12:51
  • 335

杭电 HDU 1233 还是畅通工程 (dij)

还是畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total S...
  • lsgqjh
  • lsgqjh
  • 2015年07月23日 16:21
  • 541

杭电 ACM 1007

先说下题意,很简单,给n个点的坐标,求距离最近的一对点之间距离的一半。 第一行是一个数n表示有n个点,接下来n行是n个点的x坐标和y坐标。实数。   这个题目其实就是求最近点对的距离。《算法导论...
  • zhang6733675
  • zhang6733675
  • 2012年12月12日 21:10
  • 1255

杭电acm--2055

Problem Description we define f(A) = 1, f(a) = -1, f(B) = 2, f(b) = -2, ... f(Z) = 26, f(z) = -26; ...
  • qq_26919527
  • qq_26919527
  • 2015年09月24日 21:42
  • 625

HDU-1233 还是畅通工程(最小生成树&并查集)

还是畅通工程 Problem Description 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一...
  • u014754800
  • u014754800
  • 2014年04月19日 17:24
  • 682

HDU-1233-还是畅通工程

裸的最小生成树~ 代码: #include #include #include #include using namespace std; const int maxn=5501; struct ...
  • z309241990
  • z309241990
  • 2013年07月27日 22:47
  • 468

杭电acm题目分类 非常详细

按此做成就大神之路:   1002 简单的大数 1003 DP经典问题,最大连续子段和 1004 简单题 1005 找规律(循环点) 1006 感觉有点BT的题,我到现在还没过 1007...
  • lsgqjh
  • lsgqjh
  • 2015年03月13日 17:49
  • 8213

【杭电】[1233]还是畅通工程

基础的最小生成树题目 可以拿来练习一下Prim算法和Kruskal算法的运用
  • u011493189
  • u011493189
  • 2016年02月20日 01:36
  • 188

hdu1233 还是畅通工程(两种基本最小生成树算法)

http://acm.hdu.edu.cn/showproblem.php?pid=1233 题意:中文题。 思路:最小生成树入门题。入门教程(算是看了一点),还是挑战上面的思路清晰点...
  • Flynn_curry
  • Flynn_curry
  • 2016年02月04日 12:51
  • 335

nyoj 1233 差值【特殊的大数处理】

差值 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述      输入一个整数数组,将它们连接起来排成一个数,找出能排出的所有数字中最大,最小的两个,输出两个数的...
  • liuke19950717
  • liuke19950717
  • 2015年09月09日 14:29
  • 394
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:杭电ACM1233(prim)
举报原因:
原因补充:

(最多只允许输入30个字)