From 095dcf1eac238b4730643d7332c337ca58009f91 Mon Sep 17 00:00:00 2001 From: hanyixuanten Date: Wed, 28 Oct 2026 12:50:48 +0000 Subject: [PATCH] new file: P3366.cpp --- P3366.cpp | 34 ++++++++++++++++++++++++++++++++++ P3366.md | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 P3366.cpp create mode 100644 P3366.md diff --git a/P3366.cpp b/P3366.cpp new file mode 100644 index 0000000..264b366 --- /dev/null +++ b/P3366.cpp @@ -0,0 +1,34 @@ +#include +using namespace std; +int n, m; +vector>> fri; +int fa[5005]; +int find(int x) { + if(fa[x] == x) return x; + return fa[x] = find(fa[x]); +} +int main() { + scanf("%d%d", &n, &m); + for(int i = 1; i <= n; ++i) fa[i] = i; + for(int i = 1, u, v, w; i <= m; ++i) { + scanf("%d%d%d", &u, &v, &w); + fri.push_back({w, {u, v}}); + } + sort(fri.begin(), fri.end()); + long long ans = 0; + for(auto i : fri) { + if(find(i.second.first) != find(i.second.second)) { + ans += i.first; + fa[find(i.second.first)] = find(i.second.second); + } + } + int to = find(1); + for(int i = 2; i <= n; ++i) { + if(find(i) != to) { + printf("orz\n"); + return 0; + } + } + printf("%lld\n", ans); + return 0; +} diff --git a/P3366.md b/P3366.md new file mode 100644 index 0000000..4f89f7c --- /dev/null +++ b/P3366.md @@ -0,0 +1,53 @@ +# P3366 【模板】最小生成树 + +## 题目描述 + +如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出 `orz`。 + +## 输入格式 + +第一行包含两个整数 $N,M$,表示该图共有 $N$ 个结点和 $M$ 条无向边。 + +接下来 $M$ 行每行包含三个整数 $X_i,Y_i,Z_i$,表示有一条长度为 $Z_i$ 的无向边连接结点 $X_i,Y_i$。 + +## 输出格式 + +如果该图连通,则输出一个整数表示最小生成树的各边的长度之和。如果该图不连通则输出 `orz`。 + +## 输入输出样例 #1 + +### 输入 #1 + +``` +4 5 +1 2 2 +1 3 2 +1 4 3 +2 3 4 +3 4 3 +``` + +### 输出 #1 + +``` +7 +``` + +## 说明/提示 + +数据规模: + +对于 $20\%$ 的数据,$N\le 5$,$M\le 20$。 + +对于 $40\%$ 的数据,$N\le 50$,$M\le 2500$。 + +对于 $70\%$ 的数据,$N\le 500$,$M\le 10^4$。 + +对于 $100\%$ 的数据:$1\le N\le 5000$,$1\le M\le 2\times 10^5$,$1\le Z_i \le 10^4$,$1\le X_i,Y_i\le N$。 + + +样例解释: + + ![](https://cdn.luogu.com.cn/upload/pic/2259.png) + +所以最小生成树的总边权为 $2+2+3=7$。 \ No newline at end of file