본문 바로가기

카테고리 없음

전력망 둘로 나누기

def bfs(n,gra,cut):
    visit=[0]*(n+1)
    cnt=1#n=1
    q=[]
    q.append(cut[0]) #q.append(wires[1][0])
    visit[cut[0]]=cnt
    visit[cut[1]]=-1
    while q:
        x=q.pop(0)
        for i in gra[x]:
            if visit[i]==0:
                cnt+=1
                visit[i]=cnt
                q.append(i)
    return cnt

def solution(n, wires):
    answer = n
    gra=[[]for i in range(n+1)]
    for i,j in wires:
        gra[i].append(j)
        gra[j].append(i)
    for i in wires:
        ncnt=bfs(n,gra,i)
        answer=min(answer,abs((n-ncnt)-ncnt))   #전체에서 연결된 나머지-
        #maxncnt=ncnt
        #if(ncnt>maxncnt):
            #maxa=a
            
    #print(n)
    #print(visit)
    return answer