디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

이거 푸는사람 천재

프갤러(222.111) 2024.05.18 01:41:20
조회 115 추천 0 댓글 1


#include <stdio.h>
#include <stdlib.h>
#define MAX_VERTICES 10

#define SWAP(x, y, t) ((t) = (x), (x) = (y), (y) = (t))

typedef struct GraphNode
{
    int vertex;
    struct GraphNode *link;
} GraphNode;

typedef struct GraphType
{
    int n; // 정점의 개수
    GraphNode *adj_list[MAX_VERTICES];
} GraphType;

// 그래프 초기화
void graph_init(GraphType *g)
{
    int v;
    g->n = 0;
    for (v = 0; v < MAX_VERTICES; v++)
        g->adj_list[v] = NULL;
}
// 정점 삽입 연산
void insert_vertex(GraphType *g, int v)
{
    if (((g->n) + 1) > MAX_VERTICES)
    {
        fprintf(stderr, "그래프: 정점의 개수 초과");
        return;
    }
    g->n++;
}
// 간선 삽입 연산, v를 u의 인접 리스트에 삽입한다.
void insert_edge(GraphType *g, int u, int v)
{
    GraphNode *node;
    if (u >= g->n || v >= g->n)
    {
        fprintf(stderr, "그래프: 정점 번호 오류");
        return;
    }
    node = (GraphNode *)malloc(sizeof(GraphNode));
    node->vertex = v;
    node->link = g->adj_list[u];
    g->adj_list[u] = node;
}

GraphType g;
void print_arr(int arr[], int in[], int s, int i, int size)
{
    for (int j = 0; j < g.n; j++)
        printf("%3d", in[j]);
    printf("\n");
    for (int j = 0; j < g.n; j++)
        printf("%3d", arr[j]);
    printf("  - s:%d, i:%d, size:%d\n", s, i, size);
}
void generate(int arr[], int s, int size, int *in)
{
    int i, tmp;
    int in_degree[MAX_VERTICES] = {0};
    for (i = 0; i < g.n; i++) // copy
        in_degree[i] = in[i];

    GraphNode *node = g.adj_list[arr[s]]; // 각 정점의 진입 차수를 변경
    while (node != NULL)
    {
        in_degree[node->vertex]--;
        node = node->link;
    }

    s++;
    if (s == g.n)
    {
        for (i = 0; i < g.n; i++)
            printf("정점%d->", arr[i]);
        printf("\n");
    }
    else
    {
        for (i = s; i < size; i++)
        {
            if (in_degree[arr[i]] == 0)
            {
                SWAP(arr[s], arr[i], tmp);
                generate(arr, s, size, in_degree);
                SWAP(arr[s], arr[i], tmp);
            }
        }
    }
}
// 위상정렬을 수행한다.
void topo_sort()
{
    int i, tmp;
    int arr[MAX_VERTICES], size;
    int in_degree[MAX_VERTICES];

    // 모든 정점의 진입 차수를 계산
    for (i = 0; i < g.n; i++) // 초기화
        in_degree[i] = 0;
    for (i = 0; i < g.n; i++)
    {
        GraphNode *node = g.adj_list[i]; // 정점 i에서 나오는 간선들
        while (node != NULL)
        {
            in_degree[node->vertex]++;
            node = node->link;
        }
    }
    // 진입 차수가 0인 정점을 배열에 삽입
    size = 0;
    for (i = 0; i < g.n; i++)
    {
        if (in_degree[i] == 0)
            arr[size++] = i;
    }
    // 모든 위상 순서를 생성
    for (i = 0; i < size; i++)
    {
        generate(arr, i, size, in_degree);
    }
}

int main(void)
{
    graph_init(&g);
    // 문제에 주어진 그래프에 대한 인접리스트를 완성하시오.
    insert_vertex(&g, 0);
    insert_vertex(&g, 1);
    insert_vertex(&g, 2);
    insert_vertex(&g, 3);
    insert_vertex(&g, 4);
    insert_vertex(&g, 5);

    // 정점 0의 인접 리스트 생성
    insert_edge(&g, 0, 2);
    insert_edge(&g, 0, 3);

    // 정점 1의 인접 리스트 생성
    insert_edge(&g, 1, 3);
    insert_edge(&g, 1, 4);

    // 정점 2의 인접 리스트 생성
    insert_edge(&g, 2, 3);
    insert_edge(&g, 2, 5);

    // 정점 3의 인접 리스트 생성
    insert_edge(&g, 3, 5);

    // 정점 4의 인접 리스트 생성
    insert_edge(&g, 4, 5);

    // 위상 정렬
    topo_sort();
    // 동적 메모리 반환 코드 생략
    return 0;
}
/*실제출력

*/
/*출력예시
정점0->정점1->정점2->정점4->정점3->정점5->
정점0->정점1->정점2->정점3->정점4->정점5->
정점0->정점1->정점4->정점2->정점3->정점5->
정점0->정점2->정점1->정점4->정점3->정점5->
정점0->정점2->정점1->정점3->정점4->정점5->
정점1->정점0->정점4->정점2->정점3->정점5->
정점1->정점0->정점2->정점4->정점3->정점5->
정점1->정점0->정점2->정점3->정점4->정점5->
정점1->정점4->정점0->정점2->정점3->정점5->
계속하려면 아무 키나 누르십시오 . . .
*/


아무리 생각해도 안됨 

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 힘들게 성공한 만큼 절대 논란 안 만들 것 같은 스타는? 운영자 24/06/10 - -
2710086 스프링 말고 노드나 프흐프 같은데도 취업안되냐 [1] 프갤러(112.150) 06.09 54 0
2710084 나님 요즘 모닝 루틴 ㅇㅅㅇ [4] AppHiki갤로그로 이동합니다. 06.09 38 0
2710081 탈모 원인은 딥스테이트가 하늘에 뿌리는 켐트레일임 ㅇㅅㅇㅋ [3] 나트륨찡갤로그로 이동합니다. 06.09 24 0
2710080 여행갔다오면 더좋은곳 가고싶어짐 ㅜ 조흐디(118.235) 06.09 17 0
2710079 아니 근데 이식하면 운동 못한다던ㄷ [3] linux갤로그로 이동합니다. 06.09 30 0
2710078 학살이 탈모련이라고 존나 놀린게 후회되네요 [2] linux갤로그로 이동합니다. 06.09 38 0
2710077 잠시 낮잠자고 일어나셨다 [3] 헬마스터갤로그로 이동합니다. 06.09 20 0
2710073 이번 여름방학에 이식 vs 졸업 후 이식 [6] linux갤로그로 이동합니다. 06.09 40 0
2710070 가난이 밉다... 돈에 절어 사고싶은것 하나 못사는 인생이... [4] ㅇㅇ(223.38) 06.09 41 0
2710069 여러분 왜 저는 밥 먹고 난 다음 입냄새가 심할까요 [6] linux갤로그로 이동합니다. 06.09 28 0
2710066 어메이징 스파이더맨 재미있음 [3] 프갤러(121.172) 06.09 31 0
2710065 인스타 삭제했다 [1] 조흐디(118.235) 06.09 34 0
2710064 의원님 건으로 ‘서초동’으로부터 연락을 받았다”며 비상대책위원장이 의원님 건으로 ‘서초동’으로부터 연락(211.40) 06.09 19 0
2710063 와 근데 회사 클라우드 집pc로 접근 되는거였으면 [3] linux갤로그로 이동합니다. 06.09 39 0
2710062 노인들은 왜 살까? 싹 다 안락사당하면 안됨? [3] 메쿠이로갤로그로 이동합니다. 06.09 35 0
2710061 나 때문인것 같아 어떡하지 [19] 멍청한유라ㅋ갤로그로 이동합니다. 06.09 88 0
2710060 Aws 공짜 아니냐?? [6] 프갤러(175.119) 06.09 74 0
2710059 AI로 인한 일자리 감소는 아직 제대로 시작되지도 않음 진척갤로그로 이동합니다. 06.09 37 0
2710057 조흐디 그렇게 손절해가면서 다 접어버려라 ㅇㅅㅇ [5] 나트륨찡갤로그로 이동합니다. 06.09 43 0
2710056 대중교통ㅂ 조나 올랐네 씨바것 [3] linux갤로그로 이동합니다. 06.09 33 0
2710054 나님 방 돌아가면 씻고 공부하실 준비 진척갤로그로 이동합니다. 06.09 20 0
2710053 님들 sql 독학하려는데 책뭐사야함? [4] ㅇㅇ(183.109) 06.09 46 0
2710052 나님 씻구 주무실 준비..⭐+ [1] ♥냥덩수면과학연구소♥갤로그로 이동합니다. 06.09 21 0
2710051 애니추천한다 [2] 키비갤로그로 이동합니다. 06.09 36 0
2710050 사람이랑 대화한지 너무 오래돼서, 갑자기 말할 일 생기면 입이 잘 안 [2] 진척갤로그로 이동합니다. 06.09 41 0
2710049 20살 대학 자퇴하고 개발자 공부 시작해보고 싶읍 [21] 꿈을꾼다갤로그로 이동합니다. 06.09 134 0
2710047 스트링풀에 [11] 멍청한유라ㅋ갤로그로 이동합니다. 06.09 69 0
2710045 개발자 미래 솔직히 너무 암울함 [1] 프갤러(211.218) 06.09 83 0
2710043 27년도에 아패미니 바꿔야지 [1] ♥냥덩수면과학연구소♥갤로그로 이동합니다. 06.09 18 0
2710041 서울갈바에 일본감 [9] 키비갤로그로 이동합니다. 06.09 64 0
2710039 주말 내내 만난 사람 0명 [2] 진척갤로그로 이동합니다. 06.09 29 0
2710038 버블정렬은 [7] 멍청한유라ㅋ갤로그로 이동합니다. 06.09 54 0
2710037 깨끗하게❤ 맑게⭐ 자신있게✨ [4] ♥냥덩수면과학연구소♥갤로그로 이동합니다. 06.09 24 0
2710036 서울 혼자살이 뭔하면서 시간보내냐? [3] 조흐디(118.235) 06.09 46 0
2710035 최근 친구랑 손절한이유가 중견기만 안받아줬다는이유 조흐디(118.235) 06.09 43 1
2710033 호캉스 갔다왔다 [1] 조흐디(118.235) 06.09 31 0
2710032 개발자 ㄹㅇ 학벌 안보는거같음 [1] 프갤러(118.235) 06.09 101 1
2710031 나 딱님 오운완 진척갤로그로 이동합니다. 06.09 30 0
2710030 누가 나님꺼 빨아주는거야? [4] ♥냥덩수면과학연구소♥갤로그로 이동합니다. 06.09 54 0
2710029 잠들어버릴뻔했다. [6] 멍청한유라ㅋ갤로그로 이동합니다. 06.09 64 0
2710028 취업해도 좆같다? 국비할바에 백수한다? 말의 진실 [3] 프갤러(221.165) 06.09 120 0
2710026 대기업 전산 계약직 좀그런가 조흐디(118.235) 06.09 42 0
2710025 애둘아 따꾸기 책상봐봐 [5] 프리덤건담갤로그로 이동합니다. 06.09 80 0
2710024 개발자는 깃을 어느정도로 써야되는거냐 [3] ㅇㅇ(14.38) 06.09 72 0
2710023 Kmooc 강의권 사업 더 안해주나 ㅇㅇ(125.139) 06.09 21 0
2710022 aw$가 dau 100따리 서비스에 왜 필요한지 [3] 프갤러(49.165) 06.09 23 0
2710021 나 조르디인데 회개하고 열심히 살아간다 [2] 조흐디(118.235) 06.09 37 0
2710020 자바공화국에서 빅테크는 나올 수 없다 [1] ㅇㅇ(116.39) 06.09 51 1
2710019 자바 인생 50 년 갈아 넣었습니다. 프갤러(59.16) 06.09 40 0
2710018 C++ 인생 40 년 갈아 넣었습니다. 프갤러(59.16) 06.09 31 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2