图论 - 数论 - 生成树

图论 - 数论 - 生成树

题目链接:https://www.luogu.org/problem/P3366

代码:

#include <bits/stdc++.h>

using namespace std;

const int N = 5010;

const int M = 200010;

int n, m, dis[N], ans;

int tot, head[N], val[M << 1], nxt[M << 1] ,to[M << 1];

bool vis[N];

void add(int x, int y, int z) {
    to[ ++ tot] = y;
    val[tot] = z;
    nxt[tot] = head[x];
    head[x] = tot;
}

void Prim() {
    memset(dis, 0x3f, sizeof dis);
    memset(vis, 0, sizeof vis);
    dis[1] = 0;
    for (int i = 1; i <= n; i ++ ) {
        int tmp = 1 << 30, k;
        for (int j = 1; j <= n; j ++ ) {
            if (vis[j] == 0 && dis[j] < tmp) {
                tmp = dis[j];
                k = j;
            }
        }
        vis[k] = 1;
        ans += dis[k];
        for (int j = head[k]; j; j = nxt[j]) {
            if (vis[to[j]] == 0 && dis[to[j]] > val[j]) {
                dis[to[j]] = val[j];
            }
        }
    }
}

int main() {
    scanf("%d%d", &n, &m);
    for (int i = 1; i <= m; i ++ ) {
        int x, y, z;
        scanf("%d%d%d", &x, &y, &z);
        add(x, y, z);
        add(y, x, z);
    }
    Prim();
    printf("%d\n", ans);
    return 0;
}

原文地址:https://www.cnblogs.com/littleseven777/p/11857174.html

时间: 2024-08-07 12:27:56

图论 - 数论 - 生成树的相关文章

图论(生成树):HDU 5631Rikka with Graph

Rikka with Graph Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 118    Accepted Submission(s): 52 Problem Description As we know, Rikka is poor at math. Yuta is worrying about this situation, s

中山大学选拔赛第一章题1【计算生成树】------2015年1月23日

1.1问题描述 1.2问题分析 本题主要考查图论中生成树及组合数学的求法.通过观察我们可以发现当输入为n时,我们一共有(5*n-n)=4n个点.通过思考我们可以知道,要想求得生成树,我们必须使所有五角形的圈全部破掉.那么我们可以思考: 如果对于一个五角形而言,它的每一条边都不删除,那么我们可以发现这必定不能构成生成树,因为这会导致在五角形内任意两个点会至少含有两条路径,不符合生成树的含义.所以我们可以得出如下结论: (1)对于有边数为n的回圈,我们可以发现一共有4n个点,共有5n条边.根据生成树

中山大学校队选拔赛第一章题1【计算生成树】------2015年1月23日

1.1问题描述 1.2问题分析 本题主要考查图论中生成树及组合数学的求法.通过观察我们可以发现当输入为n时,我们一共有(5*n-n)=4n个点.通过思考我们可以知道,要想求得生成树,我们必须使所有五角形的圈全部破掉.那么我们可以思考: 如果对于一个五角形而言,它的每一条边都不删除,那么我们可以发现这必定不能构成生成树,因为这会导致在五角形内任意两个点会至少含有两条路径,不符合生成树的含义.所以我们可以得出如下结论: (1)对于有边数为n的回圈,我们可以发现一共有4n个点,共有5n条边.根据生成树

acm学习总结

Acm总结 学到的算法和数据结构: STL的使用 STL是C++的标准模板库,提供了相当多的现成的库函数和数据结构,STL即可以极大地缩短代码长度,出错的概率.STL中的库函数包括sort排序函数,有find,lower_bound和upper_bound等一些查找函数用来简化代码,另外最常用的就是顺序容器和关联容器了,其实顺序容器可以相当相当程度上代替一些常用的基础数据结构如vector可以代替长度可变的数组(可以简单地实现邻接表),list可以代替链表,stack可以代替栈,deque可以代

蒟蒻的2018停课集训总结

前言 没记错的话,我应该是从9.26号开始停课集训的,不算太早,也不算很晚,这一个多月下来其实还是挺有收获的. 每天上午的模拟考试除了被爆踩的体验之外,也让我接触到,了解到并且学习到一些新的算法和知识,在这个过程中,我发现自己对信息学产生了浓厚的兴趣,这也是我能坚持到今天的最重要的原因. 因为基本上每天都有学习新的算法,新的知识,所以还是比较繁杂的.我大致就分为基本算法,图论,数论,数据结构这四个大的板块来讲.因为有些知识是自学的,可能会有没讲清的地方.基本上每一个专题最后都会有我自己做题时碰到

2015-11-28杂记

今天中午在东北大学网站上参加了第三届图灵杯的比赛,出了4题,排名45,与一些大牛们还是差太多,其中有三个还都AK了.题目还是有很大的水分,第一题直接就是让输出一个字符串,比A+B 还水,自己思维还是不行,不能想到高效的方法,这场比赛的题目就我而言还是比较好的,太多需要优化的,我抽空一定得把一些能做的给补完.http://ncc.neuq.edu.cn/oj/contest.php?cid=1040 11月我算是把全部的时间都放在了刷题上面,这个月主要看的专题是图论,生成树,现在匹配问题才刚起步,

面试高级算法梳理笔记

面试高级算法梳理笔记 1.1 说明 本篇为<挑战程序设计竞赛(第2版)>读书笔记系列,旨在: 梳理算法逻辑 探索优化思路 深入代码细节 1.2 目录 原文首发于个人博客Jennica.Space,按算法难度划分为初中高三个级别,详细目录及链接如下: 初级篇 穷竭搜索 贪心 动态规划 数据结构 图论 数论 中级篇 二分搜索 常用技巧 数据结构(二) 动态规划(二) 网络流 计算几何 高级篇 数论(二) 博弈论 图论(二) 常用技巧(二) 智慧搜索 分治 字符串 1.3 题解 配套习题及详解同步发

[模板]模板总结

图论 数论 数据结构 原文地址:https://www.cnblogs.com/hzoi-DeepinC/p/11145006.html

XJOI 高三楼

参观完各种饭堂,学校还有什么著名的景点呢?当然是教室了,此时此刻我 们来到了高三楼.你会发现高三楼门口会有以身份认证系统,这东西还有着一段疼人的历史.每年的九月到来,高三的童鞋大多不习惯学校的作息时间,有人迟到的情况在所难免,2013 届的moreD 同志作为当年的纪检部部长,创造了一种十分厉害的身份认证系统.他会给每位童鞋的饭卡加上一个电子认证信息:一个n*n的矩阵,其中,每行每列都有两个特殊的点.moreD 同志设计的身份认证系统会把这些矩阵读进来,并且对此进行解析,由于每个同学都带有独特的