디시인사이드 갤러리

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

갤러리 본문 영역

이거 푸는사람 천재

프갤러(222.111) 2024.05.18 01:41:20
조회 147 추천 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/07/07 - -
공지 프로그래밍 갤러리 이용 안내 [88] 운영자 20.09.28 45280 65
2870596 민생지원금 사전신청 오늘부터주네 25만원 방금받음 ㅋㅋㅋㅋ ㅇㅇ(121.164) 18:08 1 0
2870595 퇴근하자 개멍청한유라갤로그로 이동합니다. 18:08 1 0
2870594 나는조현병이야 나는내향적이야 [3] 손발이시립디다갤로그로 이동합니다. 18:05 5 0
2870592 나이처먹고 피지컬은 떨어지는데 경험만 쌓여서 이거 저거 한번에 생각 [1] 프갤러(218.154) 17:36 18 0
2870590 프로펙트인가 지원해본 사람 있음? [1] ㅇㅇ(118.36) 17:16 14 0
2870589 정좌불능증 재현갤로그로 이동합니다. 17:10 11 0
2870587 그냥 나가긴 싫고 실업급여라도.. [1] ㅇㅇ(211.235) 17:07 9 0
2870585 와 근데 config 설정이 80여개 넘어가니까 수정하다 지치네 [2] ㅆㅇㅆ(124.216) 16:39 21 0
2870584 deepseek 정말 못쓰겠다 쓰고싶어도 뒷통수한방(1.213) 16:28 20 0
2870583 와 근데 거북목 존나 많구나 [2] 루도그담당(211.184) 16:27 29 0
2870582 파이썬 똥쓰레기네 ㅇㅇ(106.101) 16:21 33 0
2870581 이준떡하고 시진핑 딸하고 대학동문이누?? 뒷통수한방(1.213) 16:15 9 0
2870579 그럼 ai 기술이 발전할수록 ai는 말바꾸는게 일상 되니깐 유용할듯 ㅇㅂ [1] 뒷통수한방(1.213) 16:08 25 0
2870578 ai는 말바꾸면 안되는거아님??? [1] 뒷통수한방(1.213) 16:07 17 0
2870576 귀염은 타고나는것⭐+ [3] ♥냥덩이♥갤로그로 이동합니다. 15:02 44 0
2870575 css 프레임워크 배워서 써먹는데 오래걸릴까요 [2] 프갤러(211.245) 15:00 43 0
2870574 하이부와 프로미스 [1] ㅇㅇ(39.7) 14:48 40 0
2870573 짱깨폭염 ㅅㅂ [2] 뒷통수한방(1.213) 14:47 28 0
2870571 우리 행복하자 [8] 개멍청한유라갤로그로 이동합니다. 14:33 50 0
2870570 재밌는거 개발할거없냐 [2] 밀우갤로그로 이동합니다. 14:10 50 0
2870569 3년차 프리로 sm 400받는데 걍 ㅍㅌㅊ지? [7] ㅇㅇ갤로그로 이동합니다. 13:32 66 0
2870568 날씨 리재명 같네 나라가 망한다 망해;; [4] ♥냥덩이♥갤로그로 이동합니다. 13:32 39 0
2870567 위시캣같은데서 외주 받으려면 [3] 프갤러(124.54) 13:08 33 0
2870566 ❤✨☀⭐나님 시작합니당⭐☀✨❤ ♥냥덩이♥갤로그로 이동합니다. 13:04 16 0
2870563 도메인 하나팠는데 http는 접속되고 https는 접속안되는 이유머냐 [2] 노갤러(106.102) 12:29 37 0
2870561 님들 AI 뭐 씀 [4] ㅇㅇ갤로그로 이동합니다. 12:11 77 0
2870560 50세 이상한남은 주1회 [6] 개멍청한유라갤로그로 이동합니다. 12:11 57 0
2870559 한남은 [7] 개멍청한유라갤로그로 이동합니다. 12:09 71 1
2870557 거북목 올려하나 어깨가 뻐근하네 [1] 루도그담당(211.184) 11:44 20 0
2870556 요새 주식 핫하다고 해서 오랜만에 계좌 다시 열어봤는데 [2] 프갤러(118.235) 11:37 46 1
2870554 ai는 기술이 발전하는거임?? [5] 뒷통수한방(1.213) 11:29 34 0
2870552 무능 재앙 리죄명 [1] ♥냥덩이♥갤로그로 이동합니다. 11:19 23 1
2870551 저번에 납품한거 품질 괜찮아서 딴 사람한테 납품했었는데 [2] ㅆㅇㅆ(124.216) 11:05 39 0
2870550 Ai 코드몽키 거르는법 [3] ♥냥덩이♥갤로그로 이동합니다. 11:04 76 0
2870549 드디어 1차 납품 끝났다 [1] ㅆㅇㅆ(124.216) 11:00 31 0
2870547 날씨가 타들어가는거 보면 7년전 전산모니터링 알바할떄 생각난다 [1] 프갤러(39.115) 10:51 47 0
2870546 그럼 대석열 외교참사로 망했지 살렸냐 [3] ㅆㅇㅆ찡갤로그로 이동합니다. 10:47 41 0
2870545 ㅆㅇㅆ(124.216) 대석열 외교참사덕에 망했노 07.08 10:27 ㅇㅇ(211.235) 10:44 31 4
2870544 외주장점이 납품한거 품질 괜찮으면 ㅆㅇㅆ찡갤로그로 이동합니다. 10:43 19 0
2870543 이번달 수익 200만 간당간당해보이노 [4] ㅆㅇㅆ(124.216) 10:28 55 0
2870542 봇찢더명 ♥냥덩이♥갤로그로 이동합니다. 10:22 21 0
2870540 웹서버로 홈페이지 만드니깐 존나 재밌다 [6] 프갤러(114.202) 10:16 56 0
2870539 납품은 잘만하는데 하 내 게임 [2] ㅆㅇㅆ(124.216) 10:12 32 0
2870538 게임쪽은 진심 끝내고싶은데 시간이 많이 부족해 ㅆㅇㅆ(124.216) 10:07 28 0
2870537 나도 프로젝트 끝내고싶다 ㅆㅇㅆ(124.216) 10:03 18 0
2870535 ㅆㅇㅆ가 반드시 봐야할 글이네 [2] 부드러운곰탱이갤로그로 이동합니다. 09:21 56 0
2870534 SI개발자의 기준아 뭐임? [2] ㅇㅇ(117.111) 09:20 48 0
2870533 와.. 이재명 이 범죄자새끼 때문에 나라 박살나네.. ♥냥덩이♥갤로그로 이동합니다. 09:17 41 0
2870531 ❤✨☀⭐나님 시작합니당⭐☀✨❤ [1] ♥냥덩이♥갤로그로 이동합니다. 08:41 28 0
뉴스 '화려한 날들' 배우 이태란, ‘세련 미모’ 뽐내며 감각적인 재벌 안주인 고성희 役으로 완벽 변신! 디시트렌드 07.07
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2