program grdeg
integer, allocatable :: A(:,:), B(:,:), ecc(:)
read(*, *) n
allocate(A(n,n), B(n,n), ecc(n))
call rdmat(A, n)
call connect(A, n, B)
ecc = maxval(B, 1)
irad = minval(ecc, ecc > 0)
idia = maxval(ecc)
print*, 'radius: ', irad
print*, 'diameter: ', idia
contains
subroutine prmat(A, n, d)
character(len=40) :: fmt
integer, intent(in) :: n, d
integer, intent(inout) :: A(n,n)
write(fmt, '(A,I0,A,I0,A)') '(', n, '(I', d, ':,X))'
write(*, fmt) ((A(j,i), j=1,n) ,i=1,n)
end subroutine
subroutine rdmat(A, n)
integer, intent(inout) :: A(n,n)
A = 0
do
read(*,*, end=1) i,j
A(i,j) = A(i,j)+1
A(j,i) = A(j,i)+1
end do
1 continue
end subroutine
subroutine connect(A, n, B)
integer, intent(in) :: A(n,n)
integer, intent(out):: B(n,n)
integer:: C(n,n)
B = 0
C = A
do i=1,n
where (B == 0 .and. C > 0) B = i
C = MATMUL(A,C)
end do
do i=1,n
B(i,i) = 0
end do
end subroutine
end program
cHJvZ3JhbSBncmRlZwoKICAgIGludGVnZXIsIGFsbG9jYXRhYmxlIDo6IEEoOiw6KSwgQig6LDopLCBlY2MoOikKICAgIAogICAgcmVhZCgqLCAqKSBuCiAgICBhbGxvY2F0ZShBKG4sbiksIEIobixuKSwgZWNjKG4pKQoKICAgIGNhbGwgcmRtYXQoQSwgbikKICAgIGNhbGwgY29ubmVjdChBLCBuLCBCKQogICAgZWNjID0gbWF4dmFsKEIsIDEpCiAgICBpcmFkID0gbWludmFsKGVjYywgZWNjID4gMCkKICAgIGlkaWEgPSBtYXh2YWwoZWNjKQogICAgCiAgICBwcmludCosICdyYWRpdXM6ICcsIGlyYWQKICAgIHByaW50KiwgJ2RpYW1ldGVyOiAnLCBpZGlhCgpjb250YWlucwogICAgc3Vicm91dGluZSBwcm1hdChBLCBuLCBkKQogICAgICAgIGNoYXJhY3RlcihsZW49NDApIDo6ICBmbXQKICAgICAgICBpbnRlZ2VyLCBpbnRlbnQoaW4pIDo6IG4sIGQKICAgICAgICBpbnRlZ2VyLCBpbnRlbnQoaW5vdXQpIDo6IEEobixuKQogICAgICAgIHdyaXRlKGZtdCwgJyhBLEkwLEEsSTAsQSknKSAnKCcsIG4sICcoSScsIGQsICc6LFgpKScKICAgICAgICB3cml0ZSgqLCBmbXQpICgoQShqLGkpLCBqPTEsbikgLGk9MSxuKQogICAgZW5kIHN1YnJvdXRpbmUKICAgIAogICAgc3Vicm91dGluZSByZG1hdChBLCBuKQogICAgICAgIGludGVnZXIsIGludGVudChpbm91dCkgOjogQShuLG4pCiAgICAgICAgQSA9IDAKICAgICAgICBkbwogICAgICAgICAgICByZWFkKCosKiwgZW5kPTEpIGksagogICAgICAgICAgICBBKGksaikgPSBBKGksaikrMQogICAgICAgICAgICBBKGosaSkgPSBBKGosaSkrMQogICAgICAgIGVuZCBkbwogICAgMSAgIGNvbnRpbnVlICAKICAgIGVuZCBzdWJyb3V0aW5lCgogICAgc3Vicm91dGluZSBjb25uZWN0KEEsIG4sICBCKQogICAgICAgIGludGVnZXIsIGludGVudChpbikgOjogQShuLG4pCiAgICAgICAgaW50ZWdlciwgaW50ZW50KG91dCk6OiBCKG4sbikKICAgICAgICBpbnRlZ2VyOjogQyhuLG4pCiAgICAgICAgQiA9IDAKICAgICAgICBDID0gQQogICAgCiAgICAgICAgZG8gaT0xLG4KICAgICAgICAgICAgd2hlcmUgKEIgPT0gMCAuYW5kLiBDID4gMCkgQiA9IGkKICAgICAgICAgICAgQyA9IE1BVE1VTChBLEMpCiAgICAgICAgZW5kIGRvCiAgICAgICAgZG8gaT0xLG4KICAgICAgICAgICBCKGksaSkgPSAwCiAgICAgICAgZW5kIGRvCiAgICBlbmQgc3Vicm91dGluZQoKICAgIAplbmQgcHJvZ3JhbQo=