#include <bits/stdc++.h>
using namespace std;
#define F0R(i, n) for (int i = 0; i < n; i++)
#define FOR(i, a, b) for (int i = (a); i < (b); i++)
#define ROF(i, a, b) for (int i = (a); i >= (b); i--)
#define REP(i, n) for (int i = (n); i >= 0; i--)
template<typename T>
using V = vector<T>;
using vi = vector<int>;
using ll = long long;
V<vi> g;
vi vis;
int count(int x)
{
vis[x] = 1;
int ans = 1;
for (auto y : g[x])
{
if (vis[y]) continue;
ans += count(y);
}
return ans;
}
int main()
{
int n, m; cin >> n >> m;
g.resize(n + 1);
vis.resize(n + 1);
F0R(i, m)
{
int a, b; cin >> a >> b;
g[a].push_back(b);
g[b].push_back(a);
}
ll ans = 0;
FOR(i, 1, n + 1)
{
if (!vis[i])
{
ll x = count(i);
if (x > 2) ans += x * (x - 1) * (x - 2) / 3;
}
}
cout << ans << endl;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |