coj #10066新的开始(最小生成树)
题面复制不过来,只能发图片了。。。。
思路:(太久没做图论的题目了。。。。感觉有点生疏了)
一开始是以节点1用prime做一棵最小生成树,然后加上发电站最小费用就是答案。。。。。。。。。。
结果我wa了。。。。。。。。。。。我以为最小生成树一定是唯一的,结果有这么一条定理:对于一个图G,如果图中的边权值都不相同,则图的最小生成树一定唯一,反之亦然。
我也举了一个例子:
然后可以发现以点1做最小生成树和以点4做最小生成树答案显然是先以4做根节点的更好。
代码:
#include <bits/stdc++.h>
using namespace std;const int inf = 0x3f3f3f3f;
const int maxn = 1e4 + 10;
int maxtri[maxn][maxn];
int vis[maxn];
int dis[maxn];
int n;
int prime() {int ans = 0;for (int i = 1; i <= n; i++) {int _min = inf;int k;for (int i = 1; i <= n; i++) {if (!vis[i] && dis[i] < _min) {_min = dis[i];k = i;}}vis[k] = 1;ans += dis[k];for (int j = 1; j <= n; j++) {if (!vis[j] && maxtri[k][j] < dis[j])dis[j] = maxtri[k][j];}}return ans;
}
int main() {scanf("%d", &n);for (int i = 1; i <= n; i++) {scanf("%d", &dis[i]);}for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {scanf("%d", &maxtri[i][j]);}}printf("%d\n", prime());
}
wa代码:
#include <bits/stdc++.h>
using namespace std;const int inf = 0x3f3f3f3f;
const int maxn = 1e4 + 10;
int maxtri[maxn][maxn];
int vis[maxn];
int dis[maxn];
int n;
int prime(int s) {int ans = 0;for (int i = 1; i <= n; i++) dis[i] = inf;dis[s] = 0;for (int i = 1; i <= n; i++) {int _min = inf;int k;for (int i = 1; i <= n; i++) {if (!vis[i] && dis[i] < _min) {_min = dis[i];k = i;}}vis[k] = 1;ans += dis[k];for (int j = 1; j <= n; j++) {if (!vis[j] && maxtri[k][j] < dis[j])dis[j] = maxtri[k][j];}}return ans;
}
int main() {scanf("%d", &n);int _min = inf;for (int i = 0; i < n; i++) {int a;scanf("%d", &a);_min = min(_min, a);}for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {scanf("%d", &maxtri[i][j]);}}printf("%d\n", prime(1) + _min);
}
coj #10066新的开始(最小生成树)相关推荐
- 61.新的开始(最小生成树)
文件名:newstart.cpp 输入输出文件:newstart.in.newstart.out 时空:50M,1s [题目描述] 发展采矿业当然首先得有矿井, 小 FF 花了上次探险获得的千分之一的 ...
- 数据结构与算法(7-3)最小生成树(普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法)
目录 一.最小生成树简介 二.普里姆算法(Prim) 1.原理 2.存储 2-1.图顶点和权: 2-3. 最小生成树: 3.Prim()函数 3-1.新顶点入树 3-2.保留最小权 3-3. 找到最小 ...
- 最小生成树(MST)介绍及C/C++代码
文章目录 前言 一.最小生成树是什么? 二.最小生成树的算法 1.Prim算法 2.Kruskal算法 总结 前言 最小生成树也是在路由算法设计中常用到的一种树,其可保证全局的权重和最小.如果权重 ...
- #2020.02.05训练题解#最小生成树入门(F题)
题源CF-1108 CF-1108-MST Unification Description You are given an undirected weighted connected graph w ...
- 《程序设计解题策略》——1.2 利用最小生成树及其扩展形式解题
本节书摘来自华章计算机<程序设计解题策略>一书中的第1章,第1.2节,作者:吴永辉 王建德 更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1.2 利用最小生成 ...
- 「日常训练」 Genghis Khan the Conqueror(HDU-4126)
题意 给定\(n\)个点和\(m\)条无向边(\(n\le 3000\)),需要将这\(n\)个点连通.但是有\(Q\)次(\(Q\le 10^4\))等概率的破坏,每次破坏会把\(m\)条边中的某条 ...
- 非严格次小生成树+严格次小生成树
非严格次小生成树+严格次小生成树 非严格次小生成树:首先使用最小生成树算法将最小生成树求出来,将生成树建图,然后用倍增维护树上的最大值. 考虑将所有的非树边一次加入最小生成树,并将新边与最小生成树形成 ...
- 【UOJ #108】【APIO 2013】TOLL
http://uoj.ac/problem/108 好神的一道题啊. 原图边权互不相同是重点! 如果有一个点集,有两组边集,要求这两组边集的并集的最小生成树,可以对两组边集分别求一下最小生成树构成新的 ...
- 基于C++的中国行政区域图染色与信息查询 课程论文+任务书+代码
资源下载地址:https://download.csdn.net/download/sheziqiong/85749631 资源下载地址:https://download.csdn.net/downl ...
- HDU 4126 Genghis Khan the Conqueror MST + 树形DP 2011年福州现场赛F题
题目大意: 就是现在给出一个图, N个点, M条边, N <= 3000, M <= N*N, 但是没有重边, 每条边都有一个权值, 图中没有自环 现在给出Q次询问, 每次询问表示如果更改 ...
最新文章
- 六层感知神经网络系统
- 计算机视觉行业迎来大发展,多角度解读未来前景
- mysql导出bacpac_数据库的迁移
- 技术人的少年感,和年龄无关。
- 计数排序、桶排序和基数排序
- 图像融合亮度一致_重磅干货低光图像处理方案
- 64位linux并行计算大气模型效率优化研究,64位Linux并行计算大气模型效率优化研究...
- pytorch1.7教程实验——迁移学习训练卷积神经网络进行图像分类
- 用idea给java项目打jar包
- 在 Android* 平台上设置原生 OpenGL ES*
- JSTL流程控制操作--c:if,c:choose,c:when,c:other
- mysql msdtc 不支持_MSDTC 服务意外地在 Windows Server 2012 或 Windows Server 2008 R2 SP1 中停止...
- 辉哥基于android S 分析过度动画以及窗口动画
- 【Git】查看改动文件清单
- 2021年胡润中国百富榜研究报告
- ElasticSearch分布式搜索引擎安装教程
- 微信小程序校园论坛+后台管理系统|前后分离VUE
- apmserv mysql,APMServ MySQL 1577错误解决方法
- apriori算法 python实现
- 每日任务:1276. 不浪费原料的汉堡制作方案
热门文章
- 天才在左疯子在右 读书笔记
- 手机上将mp4转换成amv_如何在Linux上将所有文本从大写转换为小写?
- 关于OpenCV for Python入门-face_recognition实现人脸识别
- 粒子群算法基本原理与编程
- mongodb——mongo笔记*
- 决策树一CART算法(第一部分)
- 渗透测试-Kali Linux 正确清理垃圾的姿势
- 美国卡尔顿学院计算机专业怎么样,如何获得美国名校卡尔顿学院录取?
- line划线计算机图像学,《计算机图形学基础》OpenGL中点画线法画直线(同时支持k1和k1的情况)...
- 华为ensp cloud(云)中没有网卡,缺失网卡,网卡地址错误解决方法