using
System;
using
System.Collections.Generic;
class
GFG{
static
int
dfs(
int
node,
int
parent,
List<
int
>[] adj,
bool
[] vis)
{
int
ans = 1;
vis[node] =
true
;
foreach
(
int
it
in
adj[node])
{
if
(it != parent)
ans += dfs(it, node, adj, vis);
}
return
ans;
}
static
int
countPaths(List<
int
>[] adj,
int
k,
int
maxn)
{
bool
[] vis =
new
bool
[maxn + 1];
int
ans = 0;
for
(
int
i = 1; i <= maxn; i++)
{
if
(!vis[i])
{
int
numNodes = dfs(i, 0, adj, vis);
ans += numNodes * (numNodes - 1) / 2;
}
}
return
ans;
}
static
void
addEdge(List<
int
>[] adj,
int
u,
int
v,
int
k)
{
if
(u > k && v > k)
{
adj[u].Add(v);
adj[v].Add(u);
}
}
public
static
void
Main(String[] args)
{
int
maxn = 12;
List<
int
>[] adj =
new
List<
int
>[maxn + 1];
for
(
int
i = 0; i < maxn + 1; i++)
{
adj[i] =
new
List<
int
>();
}
int
k = 3;
addEdge(adj, 2, 11, k);
addEdge(adj, 2, 6, k);
addEdge(adj, 5, 11, k);
addEdge(adj, 5, 10, k);
addEdge(adj, 5, 12, k);
addEdge(adj, 6, 7, k);
addEdge(adj, 6, 8, k);
Console.WriteLine(countPaths(adj, k, maxn));
}
}