디시인사이드 갤러리

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

갤러리 본문 영역

이거 푸는사람 천재

프갤러(222.111) 2024.05.18 01:41:20
조회 123 추천 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 - -
이슈 [디시人터뷰] 웃는 모습이 예쁜 누나, 아나운서 김나정 운영자 24/06/11 - -
2710331 공무원->프로그래머->배민 배달부 (메뚜기때 레밍 직업) [2] 프갤러(14.39) 06.10 71 0
2710330 흠.. ♥냥덩수면과학연구소♥갤로그로 이동합니다. 06.10 33 0
2710329 회사다니기너무빡세다 [2] 금융오지마라갤로그로 이동합니다. 06.10 70 0
2710328 네카라쿠배 초봉 6천만원 이거 다 어디갔음 ??? [3] 프갤러(14.39) 06.10 123 0
2710327 아무리 생각해봐도 개발자보다 전산직이 더 나은거같아서 [2] 딘퐁갤로그로 이동합니다. 06.10 106 0
2710325 시발 드뎌 서합했네 프갤러(112.163) 06.10 78 0
2710323 코드하느라 스트레스 받을때 푸바오 사진보고 힘내 [1] 프갤러(14.39) 06.10 58 1
2710322 요즘 개발자 다시 망함? [5] ㅇㅇ(223.38) 06.10 182 0
2710321 배구푸당 ♥냥덩수면과학연구소♥갤로그로 이동합니다. 06.10 35 0
2710320 IEEE 차기 회장은 B0@(211.36) 06.10 30 0
2710319 전산직 잘 온거같다 [13] 클갤(220.88) 06.10 174 0
2710318 전역 2주일 남았는데 휴가미루고 훈련참여하라는게 맞냐 [3] ㅇㅇ(223.62) 06.10 39 0
2710317 휴대폰 폴더 정리 잘하시는분? [2] qu(121.171) 06.10 40 0
2710316 2024년에 취업한 신입 개발자특 [1] ㅇㅇ(39.7) 06.10 256 0
2710315 애들아 돈이 필요해 [2] 공기역학갤로그로 이동합니다. 06.10 50 0
2710314 잡부 + 백앤 4년차 현재 백앤드 [4] ㅇㅇ(218.157) 06.10 163 1
2710313 미래에 통일되면 김일성 후손 모두 처단해야 한다!! 반드시!!! [3] 북괴타도갤로그로 이동합니다. 06.10 43 2
2710312 국비는 온라인으로 하는게 더 효율적인거 같음 [1] 프갤러(14.39) 06.10 78 1
2710311 좇센에 기업들은 왜 남욕남탓하는거임??세계에서 제일꿀빨면서?? [2] 뒤통수한방(1.213) 06.10 42 0
2710310 알고리즘 진짜 어렵다 ㅅㅂ 프갤러(14.39) 06.10 47 0
2710309 이번주 할일 없는데 어캄? [3] ㅇㅇ(211.234) 06.10 48 0
2710306 소규모 프리랜서로 일할만한 거 없을까? [3] 프갤러(114.203) 06.10 61 0
2710305 아니설윤카리나장원영아이유수지나라안유진싹다뭐하는거야??? 보법E노무현갤로그로 이동합니다. 06.10 41 0
2710304 나님 시작합니당✨ ♥냥덩수면과학연구소♥갤로그로 이동합니다. 06.10 33 0
2710303 딱국이 생각하는 자기자신 [1] ㅇㅇ(175.208) 06.10 57 0
2710301 윈도컴 안사도 되겠다 ㅇㅇ갤로그로 이동합니다. 06.10 54 0
2710300 나 자러간다.. ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 06.10 33 0
2710298 공무원 프갤러(211.170) 06.10 20 0
2710297 먼가 나이들수록 잘 모르게 되어버리는듯요 [7] 프로외노자갤로그로 이동합니다. 06.10 122 0
2710296 고3인데 공부 못해서 막막하다 프갤러(61.84) 06.10 44 0
2710295 나님 끙야즁✨ ♥냥덩수면과학연구소♥갤로그로 이동합니다. 06.10 39 0
2710293 코딩 <-정작 머 만드는 사람은 없고, 코딩 가르치는 사람만 넘침 [3] 프갤러(71.204) 06.10 148 3
2710289 메이플 현질할라고 쿠팡다니는데 미련한 짓인가여?? [2] ㅇㅇ(223.62) 06.10 68 0
2710288 사귀고싶고 내 이상형인 여자 스타일 말해봄 ㅇㅇ [2] 메쿠이로갤로그로 이동합니다. 06.10 60 0
2710287 김영한 같은 웹 풀스택 강의 없냐 [2] 프갤러(61.97) 06.10 105 0
2710286 P-NP 문제는 무한이랑 관련있을거 같은데 [1] ㅇㅇ(114.30) 06.10 46 0
2710285 어느 업계가든 박봉 노동자노 ㅇㅇ갤로그로 이동합니다. 06.10 61 0
2710283 여기 도배하는사람들 고수임 취준생임? [5] ㅇㅇ갤로그로 이동합니다. 06.10 92 0
2710282 알엑스 프갤러(211.170) 06.10 29 0
2710280 나님 시작합니당✨ [1] ♥냥덩수면과학연구소♥갤로그로 이동합니다. 06.10 42 0
2710278 나 강아지됐어♡ 주인님찾았뜸 ㅠㅠ [1] 딱국(118.235) 06.10 61 0
2710277 java vs python [3] ㅇㅇ(14.48) 06.10 78 0
2710275 대표의 승인하에 이뤄졌다고 보고 있다. 검찰은 작년 9월 이 대표의 구속 B0@(117.111) 06.10 35 0
2710268 어 뭐고 코드업 갑자기 안들어 가지노;;; 야옹이(125.134) 06.10 23 0
2710267 각박하고 빡신 서울살이 하려면 프로그래밍이라도 잘해야지 프갤러(14.39) 06.10 73 0
2710264 안 서는 남자들 때문에 전쟁이 난다 발명도둑잡기갤로그로 이동합니다. 06.10 55 0
2710263 음기 충전 발명도둑잡기갤로그로 이동합니다. 06.10 66 0
2710262 쟐쟈 [7] AppHiki갤로그로 이동합니다. 06.10 80 0
2710260 나 php 천재다 [1] ㅇㅇ(175.125) 06.10 62 0
2710259 자바백엔드는 취업 답없냐? (경쟁률 측면에서) [7] 프갤러(112.163) 06.10 294 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2