from __future__ import print_function
from sys import stdin

def printf(str, *args):
    print(str % args, end='')

domain = 5       # 집합의 크기 

# readfile 함수가 텍스트 파일에서 관계를 읽고 adjacency에 대입
def readfile(fn, adjacency):
    adjacencymx = [[0 for j in range(len(adjacency[0]))] for i in range(len(adjacency))]
    fp = open(fn, 'r')
    printf("파일로 입력받은 관계 R은 다음과 같다.\n")
    print("R = {", end = "")
    
    # 줄별로 파일을 읽고 lines에 대입
    lines = fp.readlines()
    
    # lines에서의 관계를 adjacency에 대입하고 A에 대한 함수 출력
    for line in lines:
        values = line.strip('\n').split()
        x = int(values[0])
        y = int(values[1])
        adjacencymx[x][y] = 1
        adjacencymx[y][x] = 1
        printf("(%1d, %1d)," %(x,y))
    print("\b}");
    fp.close()
    return adjacencymx

# 관계행렬을 위한 2차원 배열 정의 및 초기화
adjacencymx = [[0 for j in range(domain+1)] for i in range(domain+1)]
fn = "pp8-1.dat"    # 파일 이름

# 파일을 읽고 데이터를 adjacencymx에 대입
adjacencymx = readfile(fn,adjacencymx)
printf("\n\n")

# 각 정점에 대한 차수 계산 출력
printf("%5c각 정점에 대한 차수가 다음과 같다.\n\n"%' ')

for i in range(1, domain + 1):
    degree = 0       # 차수를 위한 변수
    # 정점 i에 대한 차수 계산
    for j in range(1, domain + 1):
        if adjacencymx[i][j] == 1:
            degree += 1
    if i == domain: # 마지막 정점의 경우
        printf("%5c정점 %d의 차수는 %2d이다.\n" %(' ',i,degree))
    else:
        printf("%5c정점 %d의 차수는 %2d,\n" %(' ',i,degree))

# 관계행렬 출력
printf("\n\n%5c관계 R을 인접행렬로 표현하면 다음과 같다.\n\n"%' ')

print("            ", end = "")
for i in range(1, domain + 1):
    print(i, end = " ")
print()
print("          \u250c           \u2510")
for i in range(1, domain + 1):
    print("       ", i, "| ", end = "")
    for j in range(1, domain + 1):
        print("%d" % adjacencymx[i][j], end = " ")
    print("| ")
print("          \u2514           \u2518")

stdin.readline()
