首页 > 其他分享 >洛谷 P1195.口袋的天空

洛谷 P1195.口袋的天空

时间:2022-11-09 10:12:27浏览次数:74  
标签:口袋 node 洛谷 int edge return P1195

题目链接:https://www.luogu.com.cn/problem/P1195

今天上算法设计课,复习一下 Kruskal 和并查集。


 

放AC代码

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int n, m, k, ans;
 4 int p[1010];
 5 
 6 struct node
 7 {
 8     int u, v, w;
 9 }edge[10010];
10 
11 int cmp(node a, node b)
12 {
13     return a.w < b.w;
14 }
15 
16 int getParent(int o)
17 {
18     return o == p[o] ? o : getParent(p[o]);
19 }
20 
21 int main()
22 {
23     cin >> n >> m >> k;
24     for(int i = 1; i <= m; i ++)
25     {
26         int x, y, z;
27         cin >> x >> y >> z;
28         edge[i].u = x;
29         edge[i].v = y;
30         edge[i].w = z;
31     }
32 
33     for(int i = 1; i <= n ; i ++)
34         p[i] = i;
35 
36     sort(edge + 1, edge + 1 + m, cmp);
37 
38     int h = 1;//记录到底几个节点
39     int js = 1; //计数已经加入几条边
40     while(js <= n - k) //k个树需要n-k条边
41     {
42         if(h > m)
43         {
44             cout << "No Answer" << endl;
45             return 0;
46         }
47         int x = edge[h].u, y = edge[h].v, w = edge[h].w;
48         int fx = getParent(x), fy = getParent(y);
49         if(fx != fy)
50         {
51             js ++;
52             p[fx] = fy;
53             ans += w;
54         }
55         h ++;
56     }
57 
58     if(js)  cout << ans;
59     return 0;
60 }

 

标签:口袋,node,洛谷,int,edge,return,P1195
From: https://www.cnblogs.com/marswithme/p/16872629.html

相关文章

  • 洛谷题单【入门1】顺序结构-B2002 Hello,World!
    题目描述编写一个能够输出 Hello,World! 的程序,这个程序常常作为一个初学者接触一门新的编程语言所写的第一个程序,也经常用来测试开发、编译环境是否能够正常工作。......
  • 洛谷-1198
    洛谷-1198思路这个!辅助解释Code#include<bits/stdc++.h>usingnamespacestd;#define_u_u_ios::sync_with_stdio(false),cin.tie(nullptr)#definecfint_o_o......
  • 洛谷-3295
    洛谷-3295题意此题为中文题面。思路这里辅助解释Code#include<bits/stdc++.h>usingnamespacestd;#define_u_u_ios::sync_with_stdio(false),cin.tie(nullp......
  • 洛谷-P2491 消防
    消防树上直径+尺取考虑答案的路径一定是在树上直径,因为离树上任意一个点最远的点一定是直径的两个点其中之一因此先\(dfs\)一下找出直径两个端点从其中一个端点出......
  • 洛谷--【P1618】三连击升级版题解 排列枚举+循环枚举+stl
    题目描述将 1,2,…,91,2,…,9 共 99 个数分成三组,分别组成三个三位数,且使这三个三位数的比例是 A:B:C,试求出所有满足条件的三个三位数,若无解,输出 No!!!。输入格式......
  • 洛谷 P3287
    不难发现一定是拔高一段后缀。所以设\(f_{i,j}\)表示考虑前\(i\)个位置,拔高\(j\)次,第\(i\)个位置强制选的LIS的长度。则有\(f_{i,j}=\max\limits_{1\lex\lt......
  • 洛谷 P3951 [NOIP2017 提高组] 小凯的疑惑 题解
    LuoguP3951[NOIP2017提高组]小凯的疑惑题解注:设\(A,B\)是两个集合,则\(A\timesB\)表示\(A\)与\(B\)的笛卡儿积(直积)。笛卡儿积的定义为\(S\timesM:=\{(s......
  • 洛谷 P2606 [ZJOI2010]排列计数 题解
    LuoguP2606[ZJOI2010]排列计数题解题目描述称一个\(1\simn\)的排列\(p_1,p_2,\dots,p_n\)是Magic的,当且仅当\[\foralli\in[2,n],p_i>p_{\lfloori/2......
  • 【题解】洛谷P2725 [USACO3.1]邮票 Stamps
    从n种邮票中选出不超过k张邮票,使选出来的邮票可以表示1~m之间(含)的所有数。每张邮票在不超过k的前提下,都可以使用无数次,因此可以将问题看成一个完全背包问题。n种邮票就是n......
  • 洛谷P8757 [蓝桥杯 2021 省 A2] 完美序列 题解
    思路为使描述方便,先令题目描述中的“完美序列”反转(即序列单调递增且每一个数都是上一个数的倍数)。原“完美序列”与反转后的本质相同。先考虑最大长度。显然,当完美序列......