#include <stdio.h>
#include<Windows.h>

// scanf()로 인해 발생하는 경고 해제 
#pragma warning(disable : 4996)  

#define MAXITEM 10     // 관계행렬의 최대 크기를 위한 상수

void main()
{
    // 관계행렬의 정의 및 0으로 초기화
    int m[MAXITEM + 1][MAXITEM + 1] = { 0 };
    int i, j, x, y, max;	// 관계행렬의 연산을 위한 변수

    // 사용자로부터 관계행렬의 크기와 관계행렬을 입력받기
    printf("입력으로 넣을 관계행렬의 행의 크기는?\n");
    scanf("%d", &max);
    printf("\n");
    printf("1과 0으로 데이터를 입력하라.\n");
    for (i = 1; i <= max; i++)
    {
        for (j = 1; j <= max; j++)
        {
            scanf("%d", &m[i][j]);
        }
    }
    printf("\n");
    // 행렬 m에 대해 관계가 3인 경로를 계산하면서 출력
    for (i = 1; i <= max; i++)
    {
        for (j = 1; j <= max; j++)
        {
            if (m[i][j] == 1)    // 값이 1인 셀에 대해 계속 진행
            {
                for (x = 1; x <= max; x++)
                {
                    if (m[j][x] == 1)
                    {
                        for (y = 1; y <= max; y++)
                        {
                            if (m[x][y] == 1)
                            {
                                // 발견된 길이가 3인 경로를 출력
                                printf("(%2d%2d%2d%2d) => (%d..%d)\n", i, j, x, y, i, y);
                            }
                        }
                    }
                }
            }
        }
    }
    system("PAUSE");
}