#include<stdio.h>
#include<conio.h>
#include<Windows.h>
#pragma warning (disable : 4996)

#define domain 5	// 집합의 크기 

void readfile(char fn[13], char adjancy[domain + 1][domain + 1]);

void main()
{
	// 인접행렬을 위한 2차원 배열 정의 및 초기화
	char adjancymx[domain + 1][domain + 1] = { 0 };
	char fn[13] = "pp4-1.dat"; 	// 파일 이름 초기화
	int i, j, degree; 	        // 차수를 위한 변수

	// 파일을 읽고 데이터를 adjacencymx에 대입하여 관계를 출력
	readfile(fn, adjancymx);
	printf("\b\b}\n\n");

	// 각 정점에 대한 차수를 계산해서 출력
	printf("%5c정점의 차수\n\n", ' ');
	for (i = 1; i <= domain; i++)
	{
		degree = 0;             // 차수 변수를 재초기화
		// 정점 i에 대한 차수 계산
		for (j = 1; j <= domain; j++)
		{
			if (adjancymx[i][j] == 1)
			{
				degree++;
			}
		}
		printf("%5c정점 %d의 차수는 %2d \n", ' ', i, degree);
	}
	// 인접행렬 출력
	printf("\n\n%7c인접행렬\n%5c\u250c           \u2510\n", ' ', ' ');
	for (i = 1; i <= domain; i++)
	{
		printf("%5c| ", ' ');
		for (j = 1; j <= domain; j++)
		{
			printf("%d ", adjancymx[i][j]);
		}
		printf("|\n");
	}
	printf("%5c\u2514           \u2518\n", ' ');
	system("PAUSE");
}

// readfile 함수가 텍스트 파일에서 관계를 읽고 adjacency에 대입
void readfile(char fn[13], char adjancy[domain + 1][domain + 1])
{
	FILE* fp;
	int x, y;
	fp = fopen(fn, "r");	  // 파일 열기

	printf("입력받은 관계 R의 출력이다.\n");
	printf("R = {");
	while (!feof(fp))
	{
		fscanf(fp, "%d %d", &x, &y);
		adjancy[x][y] = 1;
		printf("(%d,%1d), ", x, y);
	}
	fclose(fp);
}