16202번: MST 게임

Jake_Young·2020년 10월 16일
0
post-thumbnail

👉문제 링크


느낀점

  • 간단했다.
  • 크루스칼 문제를 풀어보았다.

정답 코드 및 해설

def lineage(son):
    global family
    while family[son] != son:
        son = family[son]
    return son


answer = []
N_nodes, N_edges, N_turn = map(int, input().split())
status_edges = []
for _ in range(N_edges):
    status_edges.append(list(map(int, input().split())))
for turn in range(N_turn):
    temp_answer = 0
    count = 0
    family = [son for son in range(N_nodes + 1)]
    for burden in range(turn, N_edges):
        a, b = status_edges[burden]
        if lineage(a) != lineage(b):
            family[lineage(a)] = lineage(b)
            count += 1
            temp_answer += burden + 1
        if count == N_nodes - 1:
            answer.append(str(temp_answer))
            break
    else:
        answer += ["0"] * (N_turn - turn)
        break

print(" ".join(answer))
profile
자바스크립트와 파이썬 그리고 컴퓨터와 네트워크

0개의 댓글