poj 1251~最小生成树~入门

本文分享了作者学习最小生成树算法的心得体会,并通过POJ 1251 Jungle Roads题目进行实战练习的经历。作者详细记录了从理解算法原理到解决实际问题过程中遇到的挑战及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天上午把最小生成树思想看了一下,感觉思想很简单,但用代码实现的时候才发现还是有点小麻烦的,然后去百度百科上把代码copy过来看了一下,百科的写得很明朗,但太长了,看得我有点郁闷。看了思想总该练习一下,百度了最小生成树的入门题,看了poj1251Jungle Roads,是一个裸最小生成树,敲了代码后发现字符输入有点小错误,加了个getchar(),输入过了,但交上去之后居然超时,算了一下没道理超时啊,应该是输入问题,将输入改成字符串,再交上去,果断AC啊。

 

ACcode:

#include<stdio.h>
#include<iostream>
#define min(a,b) a<b?a:b
using namespace std;

const int MAX=0x3ffffff;
const int size=30;

struct Gragh
{
       int vernum;
       int edge[size][size];           
}G;

int minv[size];
bool tu[size];

int minedge()
{
    int i,mins=MAX,m;
    for (i=1;i<=G.vernum;i++)
    {
        if (tu[i]&&minv[i]<mins)
        {
              mins=minv[i];
              m=i;        
        }   
    }
    return m;
}

int MST()
{
    int i,j,k,s,sum=0;
    for (i=1;i<=G.vernum;i++)  tu[i]=true;  
    for (i=2;i<=G.vernum;i++)  minv[i]=G.edge[1][i];
    s=1,tu[1]=false;
    for (i=2;i<=G.vernum;i++)
    {
        k=minedge();   
        sum+=minv[k];
        tu[k]=false;
        for (j=1;j<=G.vernum;j++)
        {
            if (tu[j])
            minv[j]=min(minv[j],G.edge[k][j]);
        } 
    }   
    return sum;
}

int main()
{
    int i,j,k,v,a,b;
    char p[10],q[10];
    while (scanf("%d",&G.vernum)&&G.vernum)
    {
          for (i=1;i<=G.vernum;i++) for (j=1;j<=G.vernum;j++) G.edge[i][j]=MAX;
          for (i=1;i<G.vernum;i++)
          {
              getchar();
              scanf("%s%d",p,&k);
              a=p[0]-'A'+1;
              for (j=1;j<=k;j++)
              {
                  scanf("%s%d",q,&v);
                  b=q[0]-'A'+1;
                  G.edge[a][b]=G.edge[b][a]=v;
              }             
          }  
          printf("%d\n",MST());        
    }
    return 0;   
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值