GESP2025年6月认证C++七级( 第三部分编程题(1)线图)
参考程序:
#include <cstdio> // 用于输入输出
using namespace std;const int N = 1e5 + 5; // 最大节点数(图中点数)
int n, m; // n: 点数,m: 边数
int deg[N]; // deg[i] 表示第 i 个点的度数(连接的边数)
long long ans; // 最终答案(L(G) 中的边数)int main() {scanf("%d%d", &n, &m); // 读取 n 和 mwhile (m--) { // 读取 m 条边int u, v;scanf("%d%d", &u, &v); // 每条边连接点 u 和 vdeg[u]++; // 点 u 的度数 +1deg[v]++; // 点 v 的度数 +1}for (int i = 1; i <= n; i++)ans += 1LL * deg[i] * (deg[i] - 1) / 2;// 每个点的度数为 deg[i],它对应的组合数为 C(deg[i], 2)// 用 long long 防止溢出printf("%lld\n", ans); // 输出答案return 0;
}