参考:https://blog.nowcoder.net/n/9814e3fcac084972ad72b1c6ffe1357e
思路:对于这种需要明确连接关系的题目来说,适合用邻接矩阵来做。因此,我们先建邻接矩阵,之后用i, j, k枚举三个点,并且判断其在邻接矩阵中的边关系。然后输出真分数就用gcd分别去除两个数值,进行约分,最终输出结果即可
代码:
import sys
input = lambda: sys.stdin.readline().strip()
import math
inf = 10 ** 18
def I():
return input()
def II():
return int(input())
def MII():
return map(int, input().split())
def GMI():
return map(lambda x: int(x) - 1, input().split())
def LI():
return input().split()
def LII():
return list(map(int, input().split()))
def LFI():
return list(map(float, input().split()))
fmax = lambda x, y: x if x > y else y
fmin = lambda x, y: x if x < y else y
isqrt = lambda x: int(math.sqrt(x))
'''
'''
def solve():
n = II()
m = II()
g = [[0] * (n + 1) for _ in range(n + 1)]
for _ in range(m):
a, b = MII()
g[a][b] = 1
g[b][a] = 1
line = tr = 0
for i in range(1, n + 1):
for j in range(1, i):
for k in range(1, j):
if g[i][j] and g[j][k] and g[k][i]:
tr += 1
line += 3
elif (g[i][j] and g[i][k]) or (g[j][i] and g[j][k]) or (g[k][i] and g[k][j]):
line += 1
tr *= 3
if tr == 0:
print('0/1')
else:
print(f"{tr // math.gcd(tr, line)}/{line // math.gcd(tr, line)}")
# t = 1
t = II()
for _ in range(t):
solve()

京公网安备 11010502036488号