← Back to List

3098번: 소셜네트워크 ↗

Solutions

Python 3
778 B | 778 chars
def f(D):
    return sum([sum(i) for i in D])
total = 0
ans = []
n,m = map(int,input().split())
D = [[0]*(n+1) for i in range(n+1)]
for i in range(m):
    a,b = map(int,input().split())
    D[a][b] = 1
    D[b][a] = 1

for i in range(1,n+1):
    D[i][i] = 1


while f(D) < n*n:
    cnt = 0
    for i in range(1,n+1):
        for j in range(1,n+1):
            for k in range(1,n+1):
                if D[i][j] == 1 and D[j][k] == 1 and D[i][k] == 0 and D[k][i] == 0:
                    # print(i,k)
                    D[i][k] = 2
                    D[k][i] = 2
                    cnt+=1
    for i in range(1,n+1):
        for j in range(1,n+1):
            if D[i][j] == 2:
                D[i][j] = 1
    ans.append(cnt)
    total+=1
print(total)
for i in ans:
    print(i)