#include <stdio.h>
#define MAX_VERTEX 50
typedef struct graphType {
int n;
int adjMatrix[MAX_VERTEX][MAX_VERTEX];
} graphType;
void createGraph(graphType* g) {
int i, j;
g->n = 0;
for (i = 0; i < MAX_VERTEX; i++) {
for (j = 0; j < MAX_VERTEX; j++) {
g->adjMatrix[i][j] = 0;
}
}
}
void insertVertex(graphType* g, int v) {
if (((g->n) + 1) > MAX_VERTEX) {
printf("\n그래프 정점의 개수를 초과했습니다."); return;
}
g->n++;
}
void insertEdge(graphType* g, int u, int v) {
if (u < 0 || u >= g->n || v < 0 || v >= g->n) {
printf("\n간선 삽입 오류: 정점 번호가 범위를 벗어났습니다."); return;
}
g->adjMatrix[u][v] = 1;
g->adjMatrix[v][u] = 1; // 무방향 그래프의 경우
}
void printAdjMatrix(graphType* g) {
int i, j;
for (i = 0; i < g->n; i++) {
for (j = 0; j < g->n; j++) {
printf(" %d", g
->adjMatrix
[i
][j
]); }
}
}
int main() {
graphType g;
createGraph(&g);
insertVertex(&g, 0);
insertVertex(&g, 1);
insertVertex(&g, 2);
insertEdge(&g, 0, 1);
insertEdge(&g, 1, 2);
insertEdge(&g, 0, 2);
printAdjMatrix(&g);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIE1BWF9WRVJURVggNTAKCnR5cGVkZWYgc3RydWN0IGdyYXBoVHlwZSB7CiAgICBpbnQgbjsKICAgIGludCBhZGpNYXRyaXhbTUFYX1ZFUlRFWF1bTUFYX1ZFUlRFWF07Cn0gZ3JhcGhUeXBlOwoKdm9pZCBjcmVhdGVHcmFwaChncmFwaFR5cGUqIGcpIHsKICAgIGludCBpLCBqOwogICAgZy0+biA9IDA7CiAgICBmb3IgKGkgPSAwOyBpIDwgTUFYX1ZFUlRFWDsgaSsrKSB7CiAgICAgICAgZm9yIChqID0gMDsgaiA8IE1BWF9WRVJURVg7IGorKykgewogICAgICAgICAgICBnLT5hZGpNYXRyaXhbaV1bal0gPSAwOwogICAgICAgIH0KICAgIH0KfQoKdm9pZCBpbnNlcnRWZXJ0ZXgoZ3JhcGhUeXBlKiBnLCBpbnQgdikgewogICAgaWYgKCgoZy0+bikgKyAxKSA+IE1BWF9WRVJURVgpIHsKICAgICAgICBwcmludGYoIlxu6re4656Y7ZSEIOygleygkOydmCDqsJzsiJjrpbwg7LSI6rO87ZaI7Iq164uI64ukLiIpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGctPm4rKzsKfQoKdm9pZCBpbnNlcnRFZGdlKGdyYXBoVHlwZSogZywgaW50IHUsIGludCB2KSB7CiAgICBpZiAodSA8IDAgfHwgdSA+PSBnLT5uIHx8IHYgPCAwIHx8IHYgPj0gZy0+bikgewogICAgICAgIHByaW50ZigiXG7qsITshKAg7IK97J6FIOyYpOulmDog7KCV7KCQIOuyiO2YuOqwgCDrspTsnITrpbwg67KX7Ja064Ks7Iq164uI64ukLiIpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGctPmFkak1hdHJpeFt1XVt2XSA9IDE7CiAgICBnLT5hZGpNYXRyaXhbdl1bdV0gPSAxOyAvLyDrrLTrsKntlqUg6re4656Y7ZSE7J2YIOqyveyasAp9Cgp2b2lkIHByaW50QWRqTWF0cml4KGdyYXBoVHlwZSogZykgewogICAgaW50IGksIGo7CiAgICBwcmludGYoIlxu7J247KCRIO2WieugrDpcbiIpOwogICAgZm9yIChpID0gMDsgaSA8IGctPm47IGkrKykgewogICAgICAgIGZvciAoaiA9IDA7IGogPCBnLT5uOyBqKyspIHsKICAgICAgICAgICAgcHJpbnRmKCIgJWQiLCBnLT5hZGpNYXRyaXhbaV1bal0pOwogICAgICAgIH0KICAgICAgICBwcmludGYoIlxuIik7CiAgICB9Cn0KCmludCBtYWluKCkgewogICAgZ3JhcGhUeXBlIGc7CiAgICBjcmVhdGVHcmFwaCgmZyk7CgogICAgaW5zZXJ0VmVydGV4KCZnLCAwKTsKICAgIGluc2VydFZlcnRleCgmZywgMSk7CiAgICBpbnNlcnRWZXJ0ZXgoJmcsIDIpOwoKICAgIGluc2VydEVkZ2UoJmcsIDAsIDEpOwogICAgaW5zZXJ0RWRnZSgmZywgMSwgMik7CiAgICBpbnNlcnRFZGdlKCZnLCAwLCAyKTsKCiAgICBwcmludEFkak1hdHJpeCgmZyk7CgogICAgcmV0dXJuIDA7Cn0K