Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int ms = 505;
- int father[ms];
- int find(int x) {
- if(x == father[x])
- return x;
- return father[x] = find(father[x]);
- }
- void join(int x, int y) {
- x = find(x);
- y = find(y);
- if(x == y)
- return;
- father[x] = y;
- }
- int main(){
- int n, m;
- cin >> n >> m;
- vector<vector<int>> edges;
- for(int i = 0; i < m; ++i) {
- int u, v, w;
- cin >> u >> v >> w;
- u--; v--;
- edges.push_back({w, u, v});
- }
- sort(edges.begin(), edges.end());
- for(int i = 0; i < n; ++i)
- father[i] = i;
- int mstCost = 0;
- for(auto e : edges) {
- if(find(e[1]) != find(e[2])) {
- join(e[1], e[2]);
- mstCost += e[0];
- }
- }
- cout << mstCost << '\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement