P1195

传送门

大体题意:

就是给你\(n\)个点\(m\)条边, 然后让你把这几个点连成\(k\)个部分.

解题思路:

很容易就可以想到生成树(别问我怎么想到的).

因为最小生成树中有一个判断

for (int i = 1; i <= m; ++i) {
if (father(ka[i].x) != father(ka[i].y)){
unionn(ka[i].x, ka[i].y);
tot += ka[i].v;
s++;
}
if (s == n - 1) break;//我在这里,如果这张图中已经加入了n-1条边,
}//那就说明图已经可以联通了,然后如果去掉m条边的话,那就是把图分成了m个部分
//那么我们可以利用这一点来用kruskal做这道题聊.

修改后的代码长这样:

for (int i = 1; i <= m; ++i) {
if (father(ka[i].x) != father(ka[i].y)){
unionn(ka[i].x, ka[i].y);
tot += ka[i].v;
s++;
}
if (s == n - k) break;//k为分成多少个部分,自己想一下也很好想.
//n-1条边可以把图刚刚好联通,n-k条边可以将图分成k个部分.
}

code:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <iomanip> using namespace std;
int n, m, k, s, cnt, tot;
struct node {
int x, y, v;
}ka[200001];
int fat[5001]; int read() {
int s = 0, f = 0; char ch = getchar();
while (!isdigit(ch)) f |= (ch == '-'), ch = getchar();
while (isdigit(ch)) s = s * 10 + (ch ^ 48), ch = getchar();
return f ? -s : s;
} int father(int x) {
if (fat[x] != x) fat[x] = father(fat[x]);//并查集用
return fat[x];
} void unionn(int x, int y) {//并查集用
int fa = father(x);
int fb = father(y);
if (fa != fb) fat[fa] = fb;
} bool cmp(node a, node b) {//sort用
return a.v < b.v;
} int main() {
n = read(), m = read(), k = read();
int x, y, d;
for (int i = 1; i <= m; i++) {
x = read(), y = read(), d = read();
ka[++cnt].v = d;
ka[cnt].x = x;
ka[cnt].y = y;
}
for (int i = 1; i <= n; i++) fat[i] = i;//并查集用
sort(ka + 1, ka + m + 1, cmp);
for (int i = 1; i <= m; ++i) {//kruskal
if (father(ka[i].x) != father(ka[i].y)){
unionn(ka[i].x, ka[i].y);
tot += ka[i].v;
s++;
}
if (s == n - k) break;
}
printf("%d\n", tot);
}

洛谷 P1195 【口袋的天空】的更多相关文章

  1. 洛谷P1195 口袋的天空

    口袋的天空 327通过 749提交 题目提供者该用户不存在 标签云端 难度普及+/提高 时空限制1s / 128MB 提交  讨论  题解 最新讨论更多讨论 暂时没有讨论 题目背景 小杉坐在教室里,透 ...

  2. 洛谷 P1195 口袋的天空

    题目背景 小杉坐在教室里,透过口袋一样的窗户看口袋一样的天空. 有很多云飘在那里,看起来很漂亮,小杉想摘下那样美的几朵云,做成棉花糖. 题目描述 给你云朵的个数N,再给你M个关系,表示哪些云朵可以连在 ...

  3. 洛谷 P1195 口袋的天空(最小生成树)

    嗯... 题目链接:https://www.luogu.org/problemnew/show/P1195 思路: 首先可以判断这道题是用最小生成树来做的,然后在将其合并时用ans记录一下它的总消耗, ...

  4. 洛谷P1195口袋的天空

    传送门啦 一个裸的最小生成树,输出 $ No Answer $ 的情况只有 $ k < n $ 的时候. 开始令 $ num =n $ ,如果 $ num = k $ ,直接输出 $ 0 $ , ...

  5. P1195 口袋的天空

    P1195 口袋的天空 题目背景 小杉坐在教室里,透过口袋一样的窗户看口袋一样的天空. 有很多云飘在那里,看起来很漂亮,小杉想摘下那样美的几朵云,做成棉花糖. 题目描述 给你云朵的个数N,再给你M个关 ...

  6. 【洛谷】【最小生成树】P1195 口袋的天空

    [题目背景:] 小杉坐在教室里,透过口袋一样的窗户看口袋一样的天空. 有很多云飘在那里,看起来很漂亮,小杉想摘下那样美的几朵云,做成棉花糖. [题目描述:] 给你云朵的个数N,再给你M个关系,表示哪些 ...

  7. P1195 口袋的天空 洛谷

    https://www.luogu.org/problem/show?pid=1195 题目背景 小杉坐在教室里,透过口袋一样的窗户看口袋一样的天空. 有很多云飘在那里,看起来很漂亮,小杉想摘下那样美 ...

  8. 【luogu P1195 口袋的天空】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1195 嗯~我是被题目背景吸引到才做的,想吃棉花糖啦! 话说回来,这道题其实很容易就能想明白,k棵最小生成树. ...

  9. luogu P1195 口袋的天空

    题目背景 小杉坐在教室里,透过口袋一样的窗户看口袋一样的天空. 有很多云飘在那里,看起来很漂亮,小杉想摘下那样美的几朵云,做成棉花糖. 题目描述 给你云朵的个数N,再给你M个关系,表示哪些云朵可以连在 ...

随机推荐

  1. webbrowser实现一个进程一个代理的办法

    public static void RefreshIESettings(string strProxy) { const int INTERNET_OPTION_PROXY = 38; const ...

  2. (原创)C#监控软件通信模型

    直接操作现场的设备是PLC,不是服务器和客户端.所以,以PLC为核心分析设备故障以及在PC端的C#程序中加入故障处理代码. PC端读和写PLC哪个重要?写重要.因为写会影响PLC的寄存器值,进而影响工 ...

  3. docker-compose进阶

    笔者在前文<Docker Compose 简介>和<Dcoker Compose 原理>两篇文章中分别介绍了 docker compose 的基本概念以及实现原理.本文我们将继 ...

  4. Java自学-异常处理 Exception

    Java 异常 Exception 异常定义: 导致程序的正常流程被中断的事件,叫做异常 步骤 1 : 文件不存在异常 比如要打开d盘的LOL.exe文件,这个文件是有可能不存在的 Java中通过 n ...

  5. 【转载】C#通过Remove方法移除DataTable中的某一列数据

    在C#中的Datatable数据变量的操作过程中,有时候我们需要移除当前DataTable变量中的某一列的数据,此时我们就需要使用到DataTable变量内部的Columns属性变量的Remove方法 ...

  6. 通过windowmanager在camera界面上显示内容

    Window与WindowManager机制https://www.jastrelax.com/android/2018-03-08-android-window/ [Android开发艺术探索阅读笔 ...

  7. 给WEB DYNPRO 程序创建TCODE

    1,创建WDA程序,这里就不介绍了,使用现成的程序:ZCRM_ME_SATISFACTION 2,SE93创建TCODE,输入事物代码ZLYTEST点击创建,选择带参数的事物代码. 3,填写事物WDY ...

  8. Kafka Streams开发入门(4)

    背景 上一篇演示了filter操作算子的用法.今天展示一下如何根据不同的条件谓词(Predicate)将一个消息流实时地进行分流,划分成多个新的消息流,即所谓的流split.有的时候我们想要对消息流中 ...

  9. 快速了解MongoDB

    简介 MongoDB是一款为广泛的现代应用程序设计的高性能.可扩展.分布式数据库系统.MongoDB可用于不同规模大小的组织,为那些对系统低延迟.高吞吐量以及可持续性有很高要求的应用提供稳定关键的服务 ...

  10. Prometheus学习笔记(5)Grafana可视化展示

    目录 一.Grafana安装和启动 二.配置数据源 三.配置dashboard 四.配置grafana告警 一.Grafana安装和启动 Grafana支持查询Prometheus.从Grafana ...