有向图强连通分量 - 2020网易互联网秋招笔试题4
题目
网易互娱笔试题:
假设教授A欣赏B,B欣赏C,则认为A也欣赏C。
输入 第一行两个整数 n m,分别表示教授人数,欣赏关系数量
余下m行,每行两个整数 a b,表示教授a欣赏b。
输入样例:
5 6
1 3
2 1
3 2
3 5
4 5
5 4
输出:
4
暴力1号(邻接矩阵)
考试提交的版本,直接迭代求解邻接矩阵(超时
def solve(N:int, Edges:[[int]]):
Map = [[False]*N for _ in range(N)]
for u, v in Edges:
Map[u-1][v-1] = True
flag = True
while flag:
flag = False
for i in range(N):
for j in range(N):
if Map[i][j]:
for k in range(N):
if k != j and k != i:
if Map[j][k] and not Map[i][k]:
flag = True
Map[i][k] = True
count = 0
for i in range(N-1):
for j in range(i+1, N):
if Map[i][j] and Map[j][i]:
count += 1
return count
暴力2号(邻接表)
考试实验的第二个版本,当然也超时了
class Node:
def __init__(self, value):
self.value = value
self.next = set()