贪睡熊猫 2019-09-27 16:06 采纳率: 14.3%
浏览 202
已采纳

关于2014.12 ccf的第四题的一点疑问

用到了krusal,写的感觉逻辑蛮简单,但是跑的结果出现错误,最后就是10分,希望大佬帮忙看看哪里出了问题

图片说明

#include<iostream>

using namespace std;

//将路径从大到小排列 
void sort(int **road,int road_num)
{
    int *temp;
    for(int n=0;n<road_num;n++)
    for(int m=n+1;m<road_num;m++)
    {
        if(road[n][2]>road[m][2])
        {
            temp=road[n];
            road[n]=road[m];
            road[m]=temp;
        }
    }
}

int main() 
{
    int field_num=0,road_num=0;
    cin>>field_num>>road_num;


    int *reach_f=new int [field_num+1];//已经可以灌溉的田地 

    int **road=new int*[road_num];//记录下面输入的内容 

    for(int n=0;n<road_num;n++)
    {
        road[n]=new int[3];
        cin>>road[n][0]>>road[n][1]>>road[n][2];
    }


    int sum=0;//需要的灌溉总路程 

    sort(road,road_num);

    for(int open=0,n=0;open<field_num;n++)//从小到大添加灌溉做需要的路程 (kruskal) 
    {
        if(reach_f[road[n][0]]!=1&&reach_f[road[n][1]]!=1)
        {
            open+=2;reach_f[road[n][0]]=1;reach_f[road[n][1]]=1;sum+=road[n][2];

        }
        else if(reach_f[road[n][0]]!=1&&reach_f[road[n][1]]==1)
        {
            open++;reach_f[road[n][0]]=1;sum+=road[n][2];

        }
        else if(reach_f[road[n][0]]==1&&reach_f[road[n][1]]!=1)
        {
            open++;reach_f[road[n][1]]=1;sum+=road[n][2];

        }
        else
        continue;

    }

    cout<<sum;

    return 0;
} 
  • 写回答

1条回答 默认 最新

  • JonathanYan 2019-09-27 17:09
    关注

    reach_f没有初始化的原因吧。

    试试这组测试数据
    4 4
    1 2 1
    3 4 1
    1 3 2
    2 4 4

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler