poj1287解题报告

2023-05-16

对于学过图和Prim算法的人来说,此题是一道不折不扣的水题,尤其是输入范围限定在了50之内,所以即便我用了O(n^3)的算法也只用了16MS就AC了。

前期建图,我用的是邻接矩阵,当两个节点有多个路径时选择最小的录入。

建完图后开始对图操作,使用的是Prim算法,其精髓是选取与集合A相接的最小边,其中集合A代表已选择节点。有疑问的可以百度Prim或参考算法导论的相关章节

具体代码如下,Memory 180K  Time  16MS

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;

const int maxn=50+10;
int G[maxn][maxn];
bool vis[maxn];
int p,r;

struct Node
{
    int p[maxn];
    int length;
}v;

void init(struct Node &s)
{
    s.length=1;
}

int main()
{
    while(scanf("%d",&p) && p)
    {
        int x,y,d;
        scanf("%d",&r);
        if(r==0) { printf("0\n"); continue; }
        memset(G,0,sizeof(G));   //一定不要忘了初始化
        memset(vis,false,sizeof(vis));
        init(v);
        for(int i=0;i<r;i++)
        {
            scanf("%d%d%d",&x,&y,&d);
            if(!G[x][y]) {G[x][y]=d; G[y][x]=d;}
            else { int k=min(G[x][y],d); G[x][y]=k; G[y][x]=k; }
        }    //建图
        v.p[v.length++]=1;
        vis[1]=true;
        int minn,ans=0,mark;
        while(v.length<=p)
        {
            minn=10000; mark=0;
            for(int i=1;i<v.length;i++)
            {
                int k=v.p[i];
                for(int j=1;j<=p;j++)
                {
                    if(vis[j]) continue;
                    if(!G[j][k]) continue;
                    if(minn>G[k][j])
                    {
                        mark=j;
                        minn=G[k][j];
                    }
                }
            }
            ans+=minn;
            vis[mark]=true;
            v.p[v.length++]=mark;
        }
        printf("%d\n",ans);
    }
    return 0;
}

错误代码如下:

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;

const int maxn=50+10;
int G[maxn][maxn];
bool vis[maxn];

int p,r;

int main()
{
    while(scanf("%d",&p) && p)
    {
        int x,y,d;
        scanf("%d",&r);
        if(r==0) { printf("0\n"); continue; }
        memset(G,0,sizeof(G));   //一定不要忘了初始化
        memset(vis,false,sizeof(vis));
        for(int i=0;i<r;i++)
        {
            scanf("%d%d%d",&x,&y,&d);
            if(!G[x][y]) {G[x][y]=d; G[y][x]=d;}
            else { int k=min(G[x][y],d); G[x][y]=k; G[y][x]=k; }
        }    //建图
        int minn,ans=0,mark;
        for(int i=1;i<=p;i++)
        {
            minn=10000;
            mark=0;
            if(vis[i]) continue;
            for(int j=1;j<=p;j++)
            {
                if(!G[j][i]) continue;
                if(minn>G[j][i])
                {
                    mark=j;
                    minn=G[j][i];
                }
            }
            ans+=minn;
            vis[mark]=true;
        }
        printf("%d\n",ans);
    }
    return 0;
}

错误原因:只是选取了每个节点的最小相邻边但并不能保证其将所有节点都连接起来,会出现1与2连,3与4连的错误情况(题中要求1234都相连)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

poj1287解题报告 的相关文章

  • HDOJ 1058 Humble Numbers解题报告【DP】

    Humble Numbers 题目详见http acm hdu edu cn showproblem php pid 61 1058 开始拿到这个题目的时候还纠结了半天 xff0c 英语很差的话这个题是不可能AC的 而我就是其中之一 Hum
  • 楼教主男人必解八题之 Coins 解题报告

    楼教主男人必解八题之 Coins 解题报告 题目详见http acm hdu edu cn showproblem php pid 61 2844 这个题目和POJ1742是一个题目 xff0c 也是楼教主的男人八题之一 说的是给出N种硬币
  • [转载]最小矩形(rec1)的解题报告

    百度之星2009大赛的第二场有一道和此相关的题目 xff0c 如果看透这篇文章应该好写了 xff0c 不过可惜我事后才看到 xff0c 郁闷啊 xff01 xff01 还是要多看看书 原文 xff1a http www pmit com c
  • Leetcode Decode Ways 解题报告

    A message containing letters from A Z is being encoded to numbers using the following mapping 39 A 39 gt 1 39 B 39 gt 2
  • poj1287解题报告

    对于学过图和Prim算法的人来说 xff0c 此题是一道不折不扣的水题 xff0c 尤其是输入范围限定在了50之内 xff0c 所以即便我用了O xff08 n 3 xff09 的算法也只用了16MS就AC了 前期建图 xff0c 我用的是
  • zoj3961解题报告

    借今年浙江省赛的题练练手 首先 xff0c 由题意知 xff0c A与B发信息 xff0c 当A与B连续互相发信息m天时 xff0c 好感度point 43 1 输入有A向B发信息的天数与B向A发信息的起止天数 xff0c 具体格式看题 n
  • poj3617解题报告

    题意 xff1a 输入一个整数n xff0c 后面跟着n行大写字母 xff0c 现要求对这些字母进行排序 xff0c 要求字典序最小 xff0c 每80个字母一行且字母只能从两端任取一个 根据上面的信息我们不难想到若使字典序最小则只需从两端
  • poj1163解题报告

    经典的动态规划 xff0c 分析省略不懂的完全可以百度 数字三角形 xff0c 仅给出AC代码Memory 260k time 32ms include lt cstdio gt include lt cstring gt include
  • UVA1592解题报告

    这道题让我费了我好几天的时间 xff0c 差不多打掉了我对算法的全部信心 不过 xff0c 幸好 xff0c 经过几天的努力我终于AC了这道题 xff0c 解开了我的一个大心结 下面我将列出三份代码 xff0c 其中后两份是WA代码用来给同
  • UVA1594解题报告

    这么垃圾的代码竟然没有超时 xff0c 我真不知道是该欢喜还是愁 AC代码 Time 0 11s include lt cstdio gt include lt cmath gt using namespace std const int
  • uva12100解题报告

    水题留念 一个队列模拟进出操作 xff0c 一个优先队列保存优先级 xff0c 模拟过程输出结果 Time 0ms include lt cstdio gt include lt queue gt include lt cstring gt
  • UVA230解题报告

    这个题耗了我六天时间 xff0c 很打击我对算法的学习 xff0c 不过 xff0c 我终于解决了他 分析如下 仔细观察我们可以发现后面的操作与输出都是围绕标题 xff08 title xff09 展开的 xff0c 作者 xff08 au
  • UVA10562解题报告

    我的GitHub地址 xff1a https github com DongChengrong ACM Program 仔细观察他给出的树 xff0c 我们可以发现这棵多叉树长得比较有特点 最上是树根 xff0c 而每一个节点只要有孩子下面
  • UVA227解题报告

    因为网格中存在空格所以用gets录入 xff0c 首先录入一行数据 xff0c 如果第一个字符为 39 Z 39 则break退出循环 其次是对指令的接受与处理 接受指令可以用getchar xff0c 遇到换行符跳过 处理也很简单 xff
  • HDU - 3018解题报告

    题意简述 给出n个节点 xff0c m条边 xff0c 问要想全部经过这m条边且每个边只经过一次至少需要多少条路径 分析 这个题实际上就是一笔画问题中的定理二 xff1a 如果连通无向图 G 有 2k 个奇顶点 xff0c 那么它可以用 k
  • UVA818解题报告

    span class hljs comment UVA 818 理解了题意和水题差不多 条件 xff1a 一些可能相同的无向边 要求 xff1a 构建一个满足如下三个要求的图 一 不能有环 二 连成一条直线 三 所有节点要连在一起 操作 x
  • 迷宫问题(2) 解题报告

    迷宫问题 问题描述 给定一个N M方格的迷宫 xff0c 迷宫里有T处障碍 xff0c 障碍处不可通过 给定起点坐标和终点坐标 xff0c 问每个方格最多经过1次 xff0c 有多少种从起点坐标到终点坐标的方案 在迷宫中移动有上下左右四种方
  • HDOJ 1058 Humble Numbers解题报告【DP】

    Humble Numbers 题目详见http acm hdu edu cn showproblem php pid 61 1058 开始拿到这个题目的时候还纠结了半天 xff0c 英语很差的话这个题是不可能AC的 而我就是其中之一 Hum
  • 楼教主男人必解八题之 Coins 解题报告

    楼教主男人必解八题之 Coins 解题报告 题目详见http acm hdu edu cn showproblem php pid 61 2844 这个题目和POJ1742是一个题目 xff0c 也是楼教主的男人八题之一 说的是给出N种硬币
  • Print in Order 解题报告(C++)

    我们提供了一个类 xff1a public class Foo public void one print 34 one 34 public void two print 34 two 34 public void three print

随机推荐

  • Hisat2 比对到参考基因组

    比对的流程 xff1a 建立索引 比对到参考基因组 SAM转BAM文件 BAM建立索引 1 准备参考基因组 建立索引 参考基因组准备 注意参考基因组版本信息 下载 xff0c Ensembl xff1a http asia ensembl
  • oh-my-posh安装过程问题及注意事项

    在通过官方的安装命令后在个人用户的环境变量中有oh my posh的环境变量 但即使已经装配了环境变量 xff0c 在powershell中输入oh my posh依然会出现未识别问题 这个问题的解决方法是 通过管理员模式进入 然后就会发现
  • 阿里巴巴2014校招笔试题-2013年9月14日

    不得不吐槽 xff0c 阿里真是太混乱了 xff0c 北京的笔试在考场等了两个半小时 xff0c 考卷都没运到考场 xff0c 64 阿里巴巴集团校园招聘 回应说 xff1a 北京的同学们 xff0c 简单解释下 xff0c 为了试卷的保密
  • Android 如何通过拨号盘暗码启动你的应用

    原文地址 xff1a https blog csdn net zhenbohuang article details 76138790 手机上通常都有一些暗码来启动一些隐藏的功能 最常见的就是在拨号盘输入 06 来查看imei号 那么自己开
  • 简单说说容器/沙盒(Sandbox)以及Linux seccomp

    如果应用程序逻辑有误 xff0c 会造成操作系统崩溃 这句话其实不对 如果一个应用程序都能让一个操作系统崩溃了 xff0c 那这一定是这个系统在设计上或者实现上的BUG xff01 再次重申 xff0c 我不知道谭浩强的C语言教材现在是怎么
  • Ubuntu下Pycharm安装破解

    在安装pycharm之前需要先安装jdk8以上的版本 安装pycharm的JDK环境 Pycharm需要JDK环境解析 xff0c 否则在安装过程中报错 依次执行一下几条command sudo add apt repository ppa
  • 二分法查找某个数的位置(Java实现)

    public class BinaryFind public static void main String args int a 61 new int 1000000 省去排序的步奏 for int i 61 0 i lt a lengt
  • 好东西一定是时间沉淀的产物!!!

    做事情 xff0c 不要期待一蹴而成 xff0c 因为好东西一定是时间沉淀的产物 xff01 xff01 xff01 总结 xff1a 细水长流
  • Tomcat无法正常工作

    场景一 xff1a 曾经下载过Tomcat xff0c 直接删除目录后又安装 出错原因 xff1a 只删除了Tomcat的相关目录 xff0c 但注册表没有删除 解决方案 xff1a 找到你重下的Tomcat xff0c 点击运行卸载文件
  • JSP内置对象错误Access restriction

    错误内容 xff1a Multiple annotations found at this line Access restriction The method 39 ServletRequest getParameter String 3
  • 搭建Android开发平台(Android studio)

    引论 开发任何软件都需要有一款顺手的开发工具 xff0c 就像是剑客应该有一把属于自己的宝剑 xff08 独孤求败级别的除外 xff09 xff0c 开发Android APP更是如此 在这里我们选择的开发工具是android studio
  • gcc编译运行c文件

    1 新建 c文件 xff08 如A c xff09 2 在当前目录下打开终端 3 输入指令 xff1a gcc c 文件名 c gcc 文件名 o o 文件名 文件名
  • ssh用户和密码远程登录命令

    ssh user 64 url p passwd
  • http工作原理

    1 域名服务器将域名转换为IP地址 xff0c http根据IP地址连接到服务器 2 发送请求 xff08 post或get xff09 3 服务器进行响应 xff0c 返回被请求的资源 4 浏览器接收文件解释并最终呈现给用户
  • Android老师作业2

    因为我没有保存 xff0c 所以没有老师发的图片 xff0c 不过考虑到这个项目考察的是UI布局和国际化 xff0c 图片的作用只是为了美观 xff0c 所以我决定只实现布局和国际化就好了 从截图上看 xff0c 最好的布局应该是用网格 x
  • TCP会话开始与结束

    会话开始 xff1a 客户端向服务器发送SYN消息 服务器接收SYN消息并发送SYN ack消息 客户端接收SYN ack并发送ack消息 服务器接收ack xff0c 连接建立会话开始 会话结束 xff1a 客户端向服务器发送fin消息
  • android启动的四种模式

    standard xff1a 顾名思义 xff0c 标准的启动模式 xff0c 也即默认的启动模式 他会创建 一个任务栈将打开的所有activity都放入 退出时按后进先出的原则依次将activity退出 这种启动模式看似没有问题 xff0
  • android老师布置的作业四

    都看过题 xff0c 题目不描述 首先 xff0c 我们需要制作静态界面然后才能将各个界面集成到一起 主界面设计分析 使用布局方式 xff1a absolute xff0c 优点是随便拖动 xff0c 缺点是只适用于一种手机屏幕 xff0c
  • android老师作业五

    UI布局以前做过 xff0c 不提了 其他的问题主要是安装1个4 0的模拟器 xff0c 不然由于安全性问题无法运转 文件存储用SharedPreferences这个工具类 xff0c 其他的关于这个项目的一切全在代码中吧 代码 xff1a
  • poj1287解题报告

    对于学过图和Prim算法的人来说 xff0c 此题是一道不折不扣的水题 xff0c 尤其是输入范围限定在了50之内 xff0c 所以即便我用了O xff08 n 3 xff09 的算法也只用了16MS就AC了 前期建图 xff0c 我用的是