题目链接
题意
给你一个
n
∗
n
n*n
n∗n 的矩阵
A
A
A,求
A
∗
A
T
A*A^T
A∗AT所有元素和
给你
m
m
m 条关系
<
u
,
v
>
<u,v>
<u,v> 表示
A
u
v
=
A
v
u
=
1
A_{uv}=A_{vu}=1
Auv=Avu=1
思路
由于矩阵对称
A
∗
A
T
=
A
∗
A
=
E
∗
A
∗
A
A*A^T=A*A=E*A*A
A∗AT=A∗A=E∗A∗A
可以转化为图论问题,从任何一点出发,走两步到任何点的方案数。
答案即每点度数平方和
代码
#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll d[10005];
int main()
{
ll t;
for(scanf("%lld",&t); t; --t)
{
ll n, m, ans = 0;
scanf("%lld%lld",&n,&m);
memset(d,0,sizeof(d));
while(m--)
{
ll a, b;
scanf("%lld%lld",&a,&b);
ans -= d[a]*d[a]+d[b]*d[b];
++d[a], ++d[b];
ans += d[a]*d[a]+d[b]*d[b];
}
printf("%lld\n",ans);
if(t^1) printf("\n");
}
return 0;
}
本文介绍了一种将矩阵运算问题转化为图论问题的方法,通过计算矩阵A与其转置矩阵AT的乘积来求解所有元素之和。利用图论中的度数概念,有效地解决了这一数学问题。
475





