회장뽑기 (플로이드 워셜)

2023. 5. 19. 19:10·Coding Test/Graph
728x90

분석

 

[1389] 케빈 베이컨의 6단계 법칙 (플로이드-워셜)

1389번: 케빈 베이컨의 6단계 법칙 첫째 줄에 유저의 수 N (2 ≤ N ≤ 100)과 친구 관계의 수 M (1 ≤ M ≤ 5,000)이 주어진다. 둘째 줄부터 M개의 줄에는 친구 관계가 주어진다. 친구 관계는 A와 B로 이루

karla.tistory.com

 

풀이

"""
회원사이에 서로 모르는 사람도 있지만, 몇 사람을 통하면 서로 모두 알 수 있 다.
각 회원은 다른 회원들과 가까운 정도에 따라 점수를 받게 된다.
예를 들어 어느 회원이 다른 모든 회원과 친구이면, 이 회원의 점수는 1점이다.
어느 회원의 점수가 2점이면, 다른 모든 회원이 친구이거나, 친구의 친구임을 말한다.
또한, 어느 회원의 점수가 3점이면, 다른 모든 회원이 친구이거나, 친구의 친구이거나, 친국의 친구의 친구임을 말한다.
4점, 5점등은 같은 방법으로 정해진다.

회장의 점수와 회장이 될 수 있는 모든 사람

입력의 첫째 줄에는 회원의 수가 있다. 단, 회원의 수는 50명을 넘지 않는다.
둘째 줄 이후로는 한 줄에 두 개의 회원번호가 있는데, 이것은 두 회원이 서로 친구임을 나타낸다.
회원번호는 1부터 회원의 수만큼 번호가 붙어있다. 마지막 줄에는 -1이 두 개 들어있다
5
1 2
2 3
3 4
4 5
2 4
5 3
-1 -1

첫째 줄은 회장 후보의 점수와 회장후보 수를 출력하고
두 번째 줄은 회장 후보를 모두 출력 한다.
2 3
2 3 4
"""
import sys
input=sys.stdin.readline

# 회원수
n=int(input())

# 인접행렬
d = array = [[sys.maxsize for j in range(n+1)] for i in range(n+1)]
for i in range(n):
    d[i][i] = 0

while True:
    a, b = map(int, input().split())
    if a==-1 and b==-1:
        break
    d[a][b] = 1
    d[b][a] = 1


for k in range(1, n+1):
    for s in range(1, n+1):
        for e in range(1, n+1):
            if d[s][e] > d[s][k] + d[k][e]:
                d[s][e] = min(d[s][e], d[s][k]+d[k][e])

# print(d)

res=[0]*(n+1) # 각 회원의 최대점수
score=sys.maxsize # 최소 점수
for i in range(1,n+1):
    for j in range(1,n+1):
        res[i]= max(res[i], d[i][j])
    score=min(res[i], score)

out=[] # 최소점수의 회원
for i in range(1, n+1):
    if res[i]==score:
        out.append(i)

print(score, len(out))
for x in out:
    print(x, end=" ")

 

 

 

 

 

 

728x90
저작자표시 비영리 변경금지 (새창열림)
'Coding Test/Graph' 카테고리의 다른 글
  • 봉우리 (네방향 탐색, 이중 for 문, all 함수)
  • 위상정렬(그래프 정렬)
  • 플로이드 워셜 알고리즘
  • 사다리 타기 (DFS)
Karla Ko
Karla Ko
𝘾𝙤𝙣𝙩𝙞𝙣𝙪𝙤𝙪𝙨𝙡𝙮 𝙄𝙢𝙥𝙧𝙤𝙫𝙞𝙣𝙜, 𝘾𝙤𝙣𝙨𝙩𝙖𝙣𝙩𝙡𝙮 𝘿𝙚𝙫𝙚𝙡𝙤𝙥𝙞𝙣𝙜 𝙔𝙚𝙨!
    250x250
  • Karla Ko
    karlaLog
    Karla Ko
  • 전체
    오늘
    어제
    • Total (467)
      • Spring (19)
      • JPA (4)
      • Cloud & Architecture (15)
        • Kubernetes (5)
        • Docker (3)
        • MSA (2)
        • GCP (1)
        • AWS (4)
      • Devops (1)
      • Message Queue (4)
        • Kafka (2)
        • RabbitMQ (2)
      • Git (4)
      • DB (4)
      • Java (9)
      • Python (4)
      • CS (11)
        • OS (8)
        • Network (2)
        • Algorithm (1)
      • Coding Test (392)
        • programmers (156)
        • Graph (43)
        • DP (37)
        • Search (31)
        • Tree (13)
        • Data Structure (26)
        • Combination (12)
        • Implement (18)
        • Geedy (23)
        • Sort (7)
        • Math (21)
        • geometry (2)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    최대공약수
    자료구조
    그리디
    최단거리
    알고리즘
    BFS
    구간합
    조합
    플로이드워셜
    구현
    최소신장트리
    정렬
    트리
    덱
    그래프
    큐
    다익스트라
    월간코드챌린지
    Algorithm
    파이썬
    프로그래머스
    재귀
    이분탐색
    스택
    LIS
    백준
    동적계획법
    DFS
    힙
    DP
  • hELLO· Designed By정상우.v4.10.3
Karla Ko
회장뽑기 (플로이드 워셜)
상단으로

티스토리툴바