디시인사이드 갤러리

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

갤러리 본문 영역

이거 푸는사람 천재

프갤러(222.111) 2024.05.18 01:41:20
조회 146 추천 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
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 현역으로 군대 안 간게 의아한 스타는? 운영자 25/06/30 - -
AD 휴대폰 바꿀까? 특가 구매 찬스! 운영자 25/07/02 - -
2869631 오랜만에 고기를 사들고 [6] 개멍청한유라갤로그로 이동합니다. 07.04 48 0
2869630 평범한 국내 중소이면서 왜 코딩테스트를 자꾸 영문으로 보내 [8] 프갤러(110.13) 07.04 69 0
2869629 [메가존클라우드] DevOps 아키텍트 SecOps 채용연계형 국비지원 [1] 교육운영팀갤로그로 이동합니다. 07.04 55 0
2869627 It트렌드는 어디어디보심? [2] ㅇㅇ갤로그로 이동합니다. 07.04 51 0
2869626 내 알리익스프레스 계정 정지 이유가 보안상의 이유라는데 발명도둑잡기(118.216) 07.04 43 0
2869625 이런... 운이 나쁘시군. 마침 이 몸이 화장실에 왔을 때 러까하다니 [3] 프갤러(218.154) 07.04 54 0
2869624 ms도 버린 러스트 왜 빠는지 모르겠네 [2] 프갤러(211.234) 07.04 56 0
2869623 섹스가 지겹다 [3] 아스카영원히사랑해갤로그로 이동합니다. 07.04 78 0
2869621 러까 저능아들 운 좋은 줄 알아라 [1] 프갤러(218.154) 07.04 58 1
2869620 그냥 작은판에서 성공(경제적 성공은 아님) 을 맞은 사람이 [2] 프갤러(175.208) 07.04 79 4
2869619 금요일에 일 추가로 시키진 않겠지 [1] 아스카영원히사랑해갤로그로 이동합니다. 07.04 39 0
2869617 [업뎃] 러스트 가스라이팅의 3단계 루비갤로그로 이동합니다. 07.04 43 1
2869616 프로그래밍 얘기는 계속 패배하니까 [3] ㅇㅇ(211.235) 07.04 123 7
2869615 나 노래 잘부르는거임? ㅇㅇ(222.104) 07.04 22 0
2869614 ❤✨☀⭐나님 시작합니당⭐☀✨❤ [4] ♥냥덩이♥갤로그로 이동합니다. 07.04 41 0
2869613 러스트의 현실 프갤러(218.50) 07.04 52 0
2869612 컴공 나왔는데 임베디드 개발자는 힘드냐 [2] 프갤러(112.171) 07.04 129 0
2869609 러스팅 소울, 5장: 바이너리의 그림자, 현실의 무게 루비갤로그로 이동합니다. 07.04 54 0
2869608 골목길 접어들때에~ 내가슴은 뛰고 있었지~ ㅇㅅㅇ [2] 헤르 미온느갤로그로 이동합니다. 07.04 27 0
2869607 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 07.04 25 0
2869606 자바 음... 참으로 안타까운 문제지. 음... 진짜 쓰레기 같은건데 [7] 프갤러(42.26) 07.04 74 0
2869605 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 07.04 28 0
2869603 학점딸리는 개발자 부캠가려는데 자바 부캠하는거 미친짓이냐? [1] 프갤러(112.171) 07.04 124 0
2869602 저능아들의 발작 포인트. 러스트의 존재 자체. 프갤러(223.54) 07.04 34 0
2869601 러스트 극성 지지자들의 '발작' 포인트: 짧고 강하게 짚어보기 루비갤로그로 이동합니다. 07.04 36 0
2869600 난 군대있을때 배구공(119.202) 07.04 54 0
2869599 나훈아 씨가 말한 슈퍼스타의 조건. 팬들만 미치게 해서는 부족하다. 프갤러(223.54) 07.04 28 0
2869598 나는 러스트를 욕한적 없고 커널이 동적링킹한다는 말도 한 적이 없다. [22] 루비갤로그로 이동합니다. 07.04 86 4
2869597 러스트 까들은 자신의 열등한 지능을 숨기려 llm 츠쿠요미로 도망쳤지만 프갤러(223.33) 07.04 27 1
2869596 러스트 1. 베어메탈 임베에서도 문제, 2. 리눅스 임베에서도 문제 루비갤로그로 이동합니다. 07.04 26 0
2869595 러스트하면 눈을 뒤집고 욕하는 놈들의 심리 프갤러(223.33) 07.04 33 0
2869594 이게 이전 버전 임베디드 관련 문서다. 루비갤로그로 이동합니다. 07.04 45 1
2869593 선생님들 조언좀 부탁드립니다 ㅇㅇ갤로그로 이동합니다. 07.04 44 0
2869592 러빠와 ㅆㅇㅆ이 허위사실 유포하는 거지 루비갤로그로 이동합니다. 07.04 50 5
2869591 서울에 가보니까 [2] 배구공(119.202) 07.04 67 0
2869590 임베디드 관련 내가 초기에 주장했던 글에 오류 없음 루비갤로그로 이동합니다. 07.04 40 2
2869589 소름돋는 홍콩과 같은 길을 가는 공산한국 [1] ♥냥덩이♥갤로그로 이동합니다. 07.04 31 0
2869588 짱깨,북괴 핵 발사시 서울 상황 ♥냥덩이♥갤로그로 이동합니다. 07.04 34 0
2869586 중요) 모두 봐라. 그리고 이걸 모두에게 말하라. 나라의 중대사다. 근구수왕갤로그로 이동합니다. 07.04 38 0
2869585 나라가 어쩌고 저쩌고 하기 전에 먼저 해야할 것 프갤러(110.8) 07.04 24 0
2869583 나라가 나한테 잘못한 것 넥도리아(175.196) 07.04 30 0
2869581 한번시작한 프로젝트는 하기싫어져도 끝까지 하는게 좋냐? [1] 프갤러(106.102) 07.04 35 0
2869580 커널모듈이 동적링크로 로딩되서 커널 바이너리 크기가 줄어드나요? 프갤러(110.8) 07.04 27 1
2869574 나님 기분 ㄱㅆㅅㅌㅊ !!! ♥냥덩이♥갤로그로 이동합니다. 07.04 21 0
2869570 청년기본소득 줄까? [1] 넥도리아(175.196) 07.04 42 0
2869566 루비가 훌륭한건 알겠음 프갤러(118.37) 07.04 51 1
2869562 디시를 어떻게해야 닉만으로 부대를 알지? [9] ㅇㅇ(211.227) 07.04 65 0
2869560 Bob Dylan on The Fugs – CIA Man 발명도둑잡기(118.216) 07.04 19 0
2869558 저사람은 아침에도 점심에도 저녁에도 새벽에도있네 [1] ㅇㅇ(211.227) 07.04 56 1
2869556 군대 이야기 참 생각하면 좆같은게 동생 죽는거 군대때문에 못봄 [2] ㅆㅇㅆ(124.216) 07.04 105 0
뉴스 '꼬꼬무', 연쇄살인범 강호순 자백 최초 영상 공개. . . 10명 외 추가 피해자 존재 가능성 충격 보도 디시트렌드 07.04
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2