首页 > 其他分享 >【最大生成树】洛谷P2700 逐个击破

【最大生成树】洛谷P2700 逐个击破

时间:2025-01-18 15:22:06浏览次数:1  
标签:洛谷 int LL return 逐个 const include P2700

P2700 逐个击破

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

typedef long long LL;

const int N = 2e5 + 10, M = N;

int n, k;
LL res, sum;
bool st[N];
int p[N];

struct Edge
{
	int a, b, w;
	bool operator< (const Edge &t)const
	{
		return w > t.w;//从大到小排
	}
}e[M];

int find(int x)
{
	return x == p[x] ? x : p[x] = find(p[x]);
}

LL kruskal()
{
	for (int i = 1; i <= n; i++) p[i] = i;
	sort(e, e + n - 1);
	LL res = 0;
	for (int i = 0; i < n - 1; i++)
	{
		int a = find(e[i].a), b = find(e[i].b), w = e[i].w;
		if (a != b)
		{
			if (st[a] && st[b]) continue; //两个敌方结点
			p[a] = b;
			res += w;	
			if (st[a]) st[b] = true;
			else if (st[b]) st[a] = true;
		}
	}
	return res;
}

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0), cout.tie(0);
	
	cin >> n >> k;
	while (k--)
	{
		int x;
		cin >> x;
		st[x] = true;
	}
	for (int i = 0; i < n - 1; i++)
	{
		int a, b, w;
		cin >> a >> b >> w;
		e[i] = {a, b, w};
		sum += w;
	}
	printf("%lld", sum - kruskal());
	return 0;
}

标签:洛谷,int,LL,return,逐个,const,include,P2700
From: https://www.cnblogs.com/Tshaxz/p/18678487

相关文章

  • 【搜索】洛谷P1123 取数游戏
    P1123取数游戏搜索顺序:按格子枚举。思想类比AcWing843.n-皇后问题按格子枚举方法,以及AcWing1116.马走日AcWing1117.单词接龙AcWing1118.分成互质组,体会恢复现场写在for循环内部与写在for循环外部的区别。最大的区别:恢复现场写在for循环外可以不用清空标记数组。......
  • 【洛谷P1303】高精度乘法
    A*BProblem题目背景高精度乘法模板题。题目描述给出两个非负整数,求它们的乘积。输入格式输入共两行,每行一个非负整数。输出格式输出一个非负整数表示乘积。样例#1样例输入#112样例输出#12提示每个非负整数不超过10^{2000}。入坑OI这么久发现还没有写过......
  • 【洛谷训练记录】【LGR-213-Div.4】洛谷入门赛 #31
    训练情况赛后反思模拟题差点红温,差一道字符串模拟题AKA题问一个数\(a\)加多少后的个位数变成\(b\),取出\(a\)的个位数,再用\(b\)去减,如果小于零答案再加十。#include<bits/stdc++.h>//#defineintlonglong#defineendl'\n'usingnamespacestd;voidsolve()......
  • 洛谷P1803
    凌乱的yyy/线段覆盖-洛谷代码区:#include<stdio.h>#include<stdlib.h>structGAME{ intstart; intend;};intcmp(constvoid*a,constvoid*b){ structGAME*game1=(structGAME*)a; structGAME*game2=(structGAME*)b; returngame1->end-game2->......
  • 洛谷题单指南-线段树的进阶用法-P3168 [CQOI2015] 任务查询系统
    原题链接:https://www.luogu.com.cn/problem/P3168题意解读:一个任务管理系统,能够查询在某个时间点运行的任务中优先级最小的k个任务的优先级之和。解题思路:由于总时间n不超过100000,考虑针对所有时刻建立可持久化线段树,根节点为root[i]的线段树维护时刻i的任务情况,节点区间表示......
  • 洛谷题单指南-线段树的进阶用法-P2617 Dynamic Rankings
    原题链接:https://www.luogu.com.cn/problem/P2617题意解读:动态求区间第k小问题。解题思路:树套树的典型应用,具体阐述参考:https://www.cnblogs.com/jcwy/p/18640914100分代码:#include<bits/stdc++.h>usingnamespacestd;constintN=100005;structOp{charop;......
  • 每日一题洛谷P5726 【深基4.习9】打分C++
    #include<iostream>#include<iomanip>usingnamespacestd;intmain(){ intn; cin>>n; intstr[1000]={0}; intmax=0; intmin=10; for(inti=0;i<n;i++){ cin>>str[i]; if(str[i]>max){ max=str[i......
  • 洛谷P1319
    压缩技术-洛谷代码区:#输入lst=list(map(int,input().split()))#n的值n=lst[0]#lists全部初始化为0lists=[0]*(n**2)lst=lst[1:]#索引index=-1foriinrange(len(lst)):#下标为奇数的索引直接加上ifi%2==0:index+=lst[i]#下标为奇数......
  • 洛谷 P8469 [Aya Round 1 D] 文文的数学游戏 C语言
    题目:P8469[AyaRound1D]文文的数学游戏-洛谷|计算机科学教育新生态题目背景在解决了上一题之后,琪露诺觉得自己仿佛就是天才。于是,射命丸文又给了她一道简单的数学题。题目描述给定长度为 n 的整数序列 a,你需要构造一个长度为 n 的整数序列 b 满足对于所有......
  • gesp(C++五级)(5)洛谷:B3929:[GESP202312 五级] 小杨的幸运数
    gesp(C++五级)(5)洛谷:B3929:[GESP202312五级]小杨的幸运数题目描述小杨认为,所有大于等于aaa的完全平方数都是他的超级幸运数。小杨还认为,所有超级幸运数的倍数都是他......