This commit is contained in:
1 parent
1d59a2d3f1
commit
095dcf1eac
2 files changed
+87
No files matched your search
@@ -0,0 +1,34 @@
|
|||||||
|
#include<bits/stdc++.h>
|
||||||
|
using namespace std;
|
||||||
|
int n, m;
|
||||||
|
vector<pair<int, pair<int, int>>> 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;
|
||||||
|
}
|
||||||
@@ -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$。
|
||||||
|
|
||||||
|
|
||||||
|
样例解释:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
所以最小生成树的总边权为 $2+2+3=7$。
|
||||||
Reference in new issue
Block a user