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

最小生成树 - # AT_abc451_e [ABC451E] Tree Distance

题目描述

$ N $ 頂点の重み付き無向木であって、以下の条件を満たすものが存在するか判定して下さい。

  • $ 1 \le i \lt j \le N $ を満たす任意の $ 2 $ 整数 $ i,j $ について頂点 $ i $ と頂点 $ j $ の距離が $ A_{i,j} $ である。

ただし、頂点 $ i $ と頂点 $ j $ の距離とは、この $ 2 $ 頂点を結ぶ唯一の単純パスに含まれる辺の重みの総和のことです。

输入格式

入力は以下の形式で標準入力から与えられる。

$ N $ $ A_{1, 2} $ $ A_{1, 3} $ $ \ldots $ $ A_{1, N} $ $ A_{2, 3} $ $ \ldots $ $ A_{2, N} $ $ \vdots $ $ A_{N-1,N} $

输出格式

条件を満たす木が存在するなら Yes を、存在しないなら No を出力せよ。

输入输出样例 #1

输入 #1

4
2 5 4
3 2
5

输出 #1

Yes

输入输出样例 #2

输入 #2

4
2 5 4
3 2
6

输出 #2

No

输入输出样例 #3

输入 #3

10
1039 1802 3781 231 5828 1944 392 262 1481
763 2742 1270 4789 905 1431 1301 442
1979 2033 5552 142 2194 2064 1205
4012 7531 2121 4173 4043 3184
6059 2175 161 493 1712
5694 6220 6090 5231
2336 2206 1347
654 1873
1743

输出 #3

Yes

说明/提示

Sample Explanation 1

例えば以下の辺をもつ木が条件を満たします。

  • 辺 $ (1, 2) $ の重みが $ 2 $
  • 辺 $ (2, 3) $ の重みが $ 3 $
  • 辺 $ (2, 4) $ の重みが $ 2 $

よって Yes と出力してください。

Sample Explanation 2

条件を満たす木は存在しません。よって No と出力してください。

Constraints

  • $ 2 \le N \le 3000 $
  • $ 1 \le A_{i,j} \le 9999 $
  • 入力される値は全て整数

解法

  1. 距离可以理解为完全图上的边
  2. 利用完全图,构造最小生成树,重构新图。
  3. 验证新图中任意两点的距离是否与原图一致
#include<bits/stdc++.h>
using namespace std;
int n,e[3002][3002],d[3002],v[3002];
vector<int> g[3002];
bool Flg[3002],F;
void dfs(int s,int k) {for (auto x:g[k]) {if (!Flg[x]) {Flg[x]=1;if (e[s][k]+e[k][x]!=e[s][x]) {F=0;return;}dfs(s,x);}}
}int main() {cin>>n;for (int i=1;i<=n;i++)for (int j=i+1;j<=n;j++) {int w;cin>>w;e[i][j]=e[j][i]=w;}Flg[1]=1;for (int i=1;i<=n;i++) d[i]=e[1][i],v[i]=1;d[0]=1e9;for (int i=1;i<n;i++) {int k=0;for (int j=1;j<=n;j++)if (!Flg[j] && d[k]>d[j]) k=j;Flg[k]=1;for (int j=1;j<=n;j++)if (!Flg[j] && d[j]>e[k][j]) d[j]=e[k][j],v[j]=k;}for (int i=2;i<=n;i++)g[i].push_back(v[i]),g[v[i]].push_back(i);F=1;for (int i=1;i<=n;i++) {memset(Flg,0,sizeof(Flg));Flg[i]=1;dfs(i,i);if (F==0)break;}if (F) cout<<"Yes\n";else cout<<"No\n";return 0;
}
http://www.jsqmd.com/news/599078/

相关文章:

  • JAVA打车小程序实现原理及开源uniapp代码片段
  • 干眼反复发作,你是不是也踩过这些“坑“?——眼科医生的10个真话
  • C++ 文件 IO 性能优化技巧
  • OpenClaw负载均衡:Qwen3-14B镜像多实例轮询调用策略
  • 基于is620n、is620p及is620伺服驱动器代码与原理的详解
  • Z-Image-Turbo-辉夜巫女从零开始:新手也能10分钟跑通文生图完整链路
  • AI Agent正在加速企业工作流程,但安全隐患已悄然浮现
  • RAG 实战|向量数据库检索原理 + Chroma 实战全攻略
  • 3步提升Windows 11系统效率:Win11Debloat开源优化工具全指南
  • python docker
  • 霍营,一个神奇的地方
  • 终极指南:如何彻底移除Windows Defender安全组件
  • 网站建设时如何考虑 SEO 因素_如何做好 SEO 竞争对手分析
  • SPIRAN ART SUMMONER高性能部署:PyTorch+4090D实现秒级响应唤醒体验
  • XS9950A国产芯片替代方案解析:3通道CVBS/HDCCTV视频信号处理与同轴音频支持
  • Google Calendar + Gemini:普通日历邀请竟能变成隐蔽监控工具
  • 2025届学术党必备的五大AI辅助写作平台推荐榜单
  • AI赋能开发:让快马解析免费资料智能生成语音助手框架
  • Anthropic官方Git MCP服务器曝三重漏洞:提示注入即可实现文件读写与远程代码执行
  • Cosmos-Reason1-7B实操手册:GPU显存监控脚本+自动清理占用进程Shell工具
  • NVIDIA 提出 PivotRL:不做整段长轨迹 RL,也能把 Agent 后训练做得又快又稳
  • (-aAa-) Linux,预制二进制文件 的 3 种安装方法 (***)
  • CLIP-GmP-ViT-L-14真实效果:多语言文本+图像跨模态检索演示
  • 别再只会Ctrl+C/V了!用WPS JS宏实现单元格的“智能复制”,效率翻倍
  • Whisper-large-v3在智能办公中的应用:会议记录自动化系统
  • MongoBleed(CVE-2025-14847):影响超8万台MongoDB服务器的高危内存泄露漏洞已在野活跃利用
  • 3步掌握3dsconv:从格式转换到自动化管理
  • 垂直行业落地:医疗场景下的 Agent 诊断辅助系统架构拆解
  • Bootstrap5 轮播详解
  • 用Proteus 8.10和AD21复刻一个51单片机光照报警器(附完整代码和避坑指南)