Submission #7487474


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
using lint = long long;
template<class T = int> using V = vector<T>;
template<class T = int> using VV = V< V<T> >;

struct UnionFind {
  const int n;
  V<> t; // root ? -sz : par
  UnionFind(int n) : n(n), t(n, -1) {}
  int find(int v) { return t[v] < 0 ? v : t[v] = find(t[v]); }
  void unite(int u, int v) {
    if ((u = find(u)) == (v = find(v))) return;
    if (-t[u] < -t[v]) swap(u, v);
    t[u] += t[v];
    t[v] = u;
  }
  bool same(int u, int v) { return find(u) == find(v); }
  int size(int v) { return -t[find(v)]; }
};

int main() {
  cin.tie(nullptr); ios::sync_with_stdio(false);
  int n, q; cin >> n >> q;
  struct Edge {
    int u, v, w;
    bool operator<(const Edge& r) const { return w > r.w; }
  };
  priority_queue<Edge> pq;
  while (q--) {
    int a, b, c; cin >> a >> b >> c;
    pq.emplace(Edge{a, b, c});
    pq.emplace(Edge{(a + 1) % n, b, c + 1});
  }

  UnionFind uf(n);
  lint res = 0;
  while (uf.size(0) < n) {
    auto e = pq.top(); pq.pop();
    if (uf.same(e.u, e.v)) continue;
    uf.unite(e.u, e.v);
    res += e.w;
    pq.emplace(Edge{(e.u + 1) % n, (e.v + 1) % n, e.w + 2});
  }
  cout << res << '\n';
}

Submission Info

Submission Time
Task G - Zigzag MST
User risujiroh
Language C++14 (GCC 5.4.1)
Score 1300
Code Size 1232 Byte
Status AC
Exec Time 116 ms
Memory 8560 KB

Judge Result

Set Name sample all
Score / Max Score 0 / 0 1300 / 1300
Status
AC × 3
AC × 36
Set Name Test Cases
sample sample-01.txt, sample-02.txt, sample-03.txt
all sample-01.txt, sample-02.txt, sample-03.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 01-23.txt, 01-24.txt, 01-25.txt, 01-26.txt, 01-27.txt, 01-28.txt, 01-29.txt, 01-30.txt, sample-01.txt, sample-02.txt, sample-03.txt
Case Name Status Exec Time Memory
01-01.txt AC 1 ms 256 KB
01-02.txt AC 54 ms 7792 KB
01-03.txt AC 81 ms 8048 KB
01-04.txt AC 7 ms 1024 KB
01-05.txt AC 8 ms 1024 KB
01-06.txt AC 9 ms 1024 KB
01-07.txt AC 10 ms 1024 KB
01-08.txt AC 14 ms 1152 KB
01-09.txt AC 21 ms 1404 KB
01-10.txt AC 55 ms 4340 KB
01-11.txt AC 74 ms 8560 KB
01-12.txt AC 87 ms 7664 KB
01-13.txt AC 90 ms 7024 KB
01-14.txt AC 89 ms 8304 KB
01-15.txt AC 89 ms 7408 KB
01-16.txt AC 88 ms 8560 KB
01-17.txt AC 89 ms 6768 KB
01-18.txt AC 84 ms 7920 KB
01-19.txt AC 7 ms 1024 KB
01-20.txt AC 19 ms 1152 KB
01-21.txt AC 48 ms 2548 KB
01-22.txt AC 106 ms 8048 KB
01-23.txt AC 108 ms 7792 KB
01-24.txt AC 13 ms 1404 KB
01-25.txt AC 116 ms 7920 KB
01-26.txt AC 7 ms 1024 KB
01-27.txt AC 19 ms 1404 KB
01-28.txt AC 75 ms 3952 KB
01-29.txt AC 102 ms 7792 KB
01-30.txt AC 114 ms 7152 KB
sample-01.txt AC 1 ms 256 KB
sample-02.txt AC 1 ms 256 KB
sample-03.txt AC 1 ms 256 KB