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

UVa 599 The Forrest for the Trees

题目描述

题目要求统计给定森林中的树和“橡子”的数量。森林由若干连通分量组成,每个连通分量若是一棵树(无环)则计为树,若只有一个孤立节点(无边)则计为橡子。

输入格式

第一行一个整数nnn,表示测试用例数。每个测试用例包含两部分:

  1. 若干行边,每行格式为(A,B),以一行*结束。
  2. 一行顶点列表,格式为A,B,C,...

输出格式

对于每个测试用例,输出一行There are x tree(s) and y acorn(s).

样例

输入

2 (A,B) (B,C) (B,D) (D,E) (E,F) (B,G) (G,H) (G,I) (J,K) (K,L) (K,M) **** A,B,C,D,E,F,G,H,I,J,K,L,M,N (A,B) (A,C) (C,F) ** A,B,C,D,F

输出

There are 2 tree(s) and 1 acorn(s). There are 1 tree(s) and 1 acorn(s).

题目分析

本题的核心是使用并查集(Union-Find\texttt{Union-Find}Union-Find)统计连通分量,并判断每个分量是否为树。

算法

  • 对于每条边,将两个顶点合并。
  • 统计每个连通分量的顶点数和边数。
  • 若边数 = 顶点数−1- 11,则为树;若顶点数=1= 1=1且边数=0= 0=0,则为橡子。

复杂度分析

顶点数≤26\le 2626,边数有限。

代码实现

// The Forrest for the Trees// UVa ID: 599// Verdict: Accepted// Submission Date: 2016-08-12// UVa Run Time: 0.040s//// 版权所有(C)2016,邱秋。metaphysis # yeah dot net#include<bits/stdc++.h>usingnamespacestd;constintMAXN=26;intparent[MAXN],ranks[MAXN];intfindSet(intx){return(x==parent[x]?x:parent[x]=findSet(parent[x]));}voidunionSet(intx,inty){x=findSet(x);y=findSet(y);if(x==y)return;if(ranks[x]>ranks[y])parent[y]=x;else{parent[x]=y;if(ranks[x]==ranks[y])ranks[y]++;}}intmain(){cin.tie(0);cout.tie(0);ios::sync_with_stdio(false);string line;getline(cin,line);intcases=stoi(line);for(inti=1;i<=cases;i++){memset(ranks,0,sizeof(ranks));memset(parent,-1,sizeof(parent));while(getline(cin,line),line.length()>0&&line.front()!='*'){intstart=-1,end=-1;for(intj=0;j<line.length();j++){if(isalpha(line[j])){if(start==-1)start=line[j]-'A';else{end=line[j]-'A';break;}}}if(parent[start]==-1)parent[start]=start;if(parent[end]==-1)parent[end]=end;unionSet(start,end);}while(getline(cin,line)){if(line.length()==0)continue;for(intj=0;j<line.length();j++)if(isalpha(line[j])){intvertex=line[j]-'A';if(parent[vertex]==-1)parent[vertex]=-2;}break;}inttrees=0,acorns=0;for(intj=0;j<26;j++)if(parent[j]==j)trees++;elseif(parent[j]==-2)acorns++;cout<<"There are "<<trees<<" tree(s) and "<<acorns<<" acorn(s).\n";}return0;}
http://www.gsyq.cn/news/1587111.html

相关文章:

  • FlyOOBE:为老旧硬件开启Windows 11升级新纪元的技术伙伴
  • 大模型微调缺数据?合成数据实战指南
  • 1000 tokens/s 到底有多快?我用 8 次 API 请求,测了 4 款国产大模型
  • ICLR 2026 Oral 用 RL 训 Embedder 而非 LLM:Q-RAG 把多步检索成本砍到几乎免费
  • billd-desk终极指南:如何构建企业级远程桌面控制与游戏串流平台
  • AI 编程时代,UI 设计系统也需要工程化:从 Google DESIGN.md 说起
  • VisualCppRedist AIO:Windows运行库的“瑞士军刀“如何解决你的软件兼容性难题
  • Java应用启动慢、接口超时、频繁Full GC?别再把锅甩给JVM了!
  • Android Studio中文汉化终极指南:5分钟打造母语级开发环境
  • ROS嵌入式部署实战:在Jetson/RPi上稳定运行机器人系统
  • 服装贴口袋工序自动化科普:慧拿线上激光模板机全面解析
  • AI案例:选AI还是选人
  • 白领 16 亿 tokens
  • Fastjson反序列化漏洞:从原理到实战防护的Java安全必修课
  • 从高维数据中提取本质特征:秩提取与鲁棒子空间设计实践
  • 银河麒麟V10 SP3 源码编译部署 PostgreSQL 18.4
  • 跨平台资源下载神器:5分钟掌握res-downloader完整使用指南
  • 计算机小程序毕设实战-基于 SpringBoot+UniApp 的区域文旅(冀鲁豫)旅行推荐系统设计与实现 基于 SpringBoot+UniA【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 智人曾经这样灭绝猛犸象:AI入侵与行业灭绝
  • Loop Engineering :从提示词工程到循环工程,AI 编程的范式革命
  • 终极免费解锁:如何用Ohook完整激活Microsoft 365所有功能
  • 电梯里同事问我:“你觉得RAG落地最难的地方在哪?”,我愣了,保安转头:“我以前干过,主要就文档预处理、召回质量、生成忠诚度”
  • 终极SPT-AKI存档编辑器:免费开源的游戏进度管理神器
  • 深度剖析SQL注入攻防:从MySQL语法特性到多层防护体系
  • 淘宝闪购 AI 应用研发二面,我笑了!!!
  • 大模型AI智能客服系 AI智能客服系统 - 全功能详细介绍
  • 幼小衔接友好英语启蒙app深度实测,和小学教材主题同步对接
  • 遗传算法求解背包问题:零基础实战指南
  • 我翻脸了:“怎么现在面开发岗也要了解Transformer?”,面试官:“那你知道上下文窗口为什么有上限?为什么长对话质量越来越差吗?”
  • RLHF实战指南:用人类偏好对齐大模型意图