当前位置: 首页 > news >正文

HDU-3367 Pseudoforest

题目

在图论里,伪森林是指一个无向图,其中每个连通块最多只有一个环。图 \(G\) 的极大伪森林是指那些不能被包含进更大伪森林的伪森林子图。伪森林的“大”与“小”是通过边权值总和来比较的,边权值总和越大,伪森林就越“大”。

输入

输入包含多个测试用例。每个测试用例的第一行有两个整数 \(n\) (\(0 < n \le 10000\))、\(m\)(\(0 \le m \le 100000\)),分别表示顶点数和边数。接下来 \(m\) 行,每行三个整数 \(u\)\(v\)\(c\),表示顶点 \(u\) 和顶点 \(v\) 之间有一条权值为 \(c\) (\(0 < c \le 10000\)) 的边。保证没有自环和重边。
当遇到一行“\(0\) \(0\)”时,表示输入结束。

输出

输出最大伪森林中所有边权值的总和。

思路

伪森林的定义为:

伪森林是指一个无向图,其中每个连通块最多只有一个环。

那么我们采取 \(Kruskal\) 算法,并采取带权并查集,记录每个代表的权值就是它所在的连通块中环的个数。只要本次合并不会产生包含两个环以上的连通块,那么合并合法。

代码时间复杂度就相当于 \(Kruskal\) 算法的时间复杂度,不会超时。

代码

#include <bits/stdc++.h>
#define N 10010
#define M 100010
using namespace std;
struct edge {int x,y;int val;
};
bool operator<(const edge &a,const edge &b) {return a.val>b.val;
}
int n,m,ans,u,v,w;
edge ed[M];
int fa[N],val[N];
int find(int u) {if(fa[u]==u) return u;else return fa[u]=find(fa[u]);
}
int main() {ios::sync_with_stdio(0);cin.tie(0); cout.tie(0);while(true){cin>>n>>m;if(n==0 && m==0) break;for(int i=1;i<=m;i++) {cin>>ed[i].x>>ed[i].y>>ed[i].val;ed[i].x++; ed[i].y++;}sort(ed+1,ed+1+m);for(int i=1;i<=n;i++) {fa[i]=i;val[i]=0;}ans=0;for(int i=1;i<=m;i++) {u=ed[i].x; v=ed[i].y;w=ed[i].val;if(find(u)==find(v)) {if(val[find(u)]==0) {val[find(u)]++;ans+=w;}}else {if(val[find(u)]+val[find(v)]<=1) {val[find(v)]+=val[find(u)];fa[find(u)]=find(v);ans+=w;}}}cout<<ans<<'\n';}return 0;
} 
http://www.jsqmd.com/news/651961/

相关文章:

  • 5分钟掌握CaptfEncoder V3:跨平台网络安全工具套件实战指南
  • 3分钟极速安装!终极免费GitHub加速插件完整使用指南
  • 3个高效使用bilibili-api-python的进阶技巧:解决你的B站数据获取难题
  • 从华科期末考到机器学习:矩阵论里的奇异值分解(SVD)到底怎么用?
  • 从自行车变速到无人机飞控:聊聊‘转动惯量’这个参数在工程设计中到底有多重要
  • Kuikly 上手成本分析:面向跨平台框架选型的开发者指南 - 领先技术探路人
  • 目前最新可用claude code 亲自手动实操步骤
  • 第二十八天(4.16)
  • STM32光敏传感器实战:从硬件连接到智能控制
  • 绝地求生压枪宏终极指南:5分钟实现零后坐力稳定射击
  • 艾体宝干货|主流开源许可证解析
  • 在ruoyi vue实现后端单表user的CURD功能
  • 【QA】Word数学符号输入技巧:如何在字母上方添加小尖儿(^)
  • 生成式AI应用评测进入“后SITS时代”?2026版新增动态对抗测试、多轮意图漂移追踪、供应链溯源评分——仅限首批认证机构解密
  • NFC技术解析:从基础原理到实际应用
  • Qwen3.5-4B-Claude-GGUF新手教程:中文问答/代码生成/分步解题三大核心功能
  • 机器学习之超参数是什么?
  • 范式跃迁与价值重构:2026年人工智能发展的独到思考与实践路径
  • 【2026奇点智能技术大会权威内参】:AI学习助手的5大颠覆性能力与3个月落地实操路径
  • 保姆级教程:手把手调试高通CamX相机驱动的Open与Initialize流程(附Log分析)
  • 标注成本飙升300%?多模态数据标注流水线重构指南,6步实现人工标注量下降65%、模型收敛加速2.8倍
  • Golang怎么用go-noescape优化性能_Golang如何使用编译器指令控制逃逸分析行为【进阶】
  • 为什么92%的游戏AI团队还没跨过“多模态融合”门槛?奇点大会首席科学家亲授3步通关路径
  • 从Token级溯源到业务指标归因,生成式AI应用全链路追踪的5层黄金监控栈,92%团队尚未部署
  • 【企业级生成式AI集群治理白皮书】:基于27家头部客户实测数据,定义多集群SLA黄金标准
  • 从零到N:巧用74LS192的复位与预置功能构建自定义计数器
  • 【限时解禁】SITS2026内部验证的7层质量过滤机制:为什么92.3%的AI广告初稿被自动淘汰?
  • 终极罗技鼠标宏指南:5分钟实现绝地求生零后坐力压枪
  • Java 并发任务模型
  • 智库级深度复盘:商业航天星链协同测控云平台——从“单星孤岛”到“云网融合”的范式重构(WORD)