제출 #260894

#제출 시각아이디문제언어결과실행 시간메모리
260894SorahISA철인 이종 경기 (APIO18_duathlon)C++17
8 / 100
62 ms4856 KiB
#pragma GCC optimize("Ofast", "unroll-loops") #include <bits/stdc++.h> using namespace std; #define int long long #define double long double using pii = pair<int, int>; template<typename T> using prior = priority_queue<T, vector<T>, greater<T>>; template<typename T> using Prior = priority_queue<T>; #define X first #define Y second #define ALL(x) (x).begin(), (x).end() #define eb emplace_back #define pb push_back #define fastIO() ios_base::sync_with_stdio(false), cin.tie(0) const int maxn = 1E5 + 5; vector<int> p(maxn), sz(maxn, 1); int R(int x) {return x ^ p[x] ? p[x] = R(p[x]) : x;} void U(int x, int y) {if (R(x) ^ R(y)) sz[R(y)] += sz[R(x)], p[R(x)] = R(y);} int32_t main() { fastIO(); iota(ALL(p), 0); int n, m, ans = 0; cin >> n >> m; int u[m], v[m]; for (int i = 0; i < m; ++i) { cin >> u[i] >> v[i], U(u[i], v[i]); } map<int, int> cnt; for (int i = 0; i < m; ++i) { ++cnt[R(u[i])]; } for (auto [idx, val] : cnt) { if (val == sz[idx]) ans += sz[idx] * (sz[idx] - 1) * (sz[idx] - 2); else ans += sz[idx] * (sz[idx] - 1) * (sz[idx] - 2) / 3; } cout << ans << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...