Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- ifstream fin("modern.in");
- ofstream fout("modern.out");
- int parent[110], rnk[110];
- struct da {
- int f, t, cost;
- };
- bool comp(da a, da b)
- {
- return a.cost < b.cost;
- }
- vector < da > v;
- vector < pair < int, int > > muuu;
- int n, m, cT;
- int ufind(int nod)
- {
- while (parent[nod] != nod)
- {
- parent[nod] = parent[parent[nod]];
- nod = parent[nod];
- }
- return nod;
- }
- void unite(int a, int b)
- {
- if (rnk[a] > rnk[b])
- parent[b] = a;
- else
- parent[a] = b;
- if (rnk[a] == rnk[b])
- rnk[b]++;
- }
- void Kruskal()
- {
- for (da el : v)
- {
- int rootF = ufind(el.f), rootT = ufind(el.t);
- if (rootF != rootT)
- {
- muuu.push_back({el.f, el.t});
- cT += el.cost;
- unite(rootT, rootF);
- }
- }
- }
- int main()
- {
- fin >> n >> m;
- muuu.reserve(m);
- for (int i = 1; i <= m; i++)
- {
- int a, b, c;
- fin >> a >> b >> c;
- v.push_back({a, b, c});
- }
- sort(v.begin(), v.end(), comp);
- for (int i = 1; i <= n; i++)
- parent[i] = i, rnk[i] = 1;
- Kruskal();
- for (auto el : muuu)
- {
- fout << el.first << ' ' << el.second << '\n';
- }
- fout << cT * 100 << '\n';
- fin.close();
- fout.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement