디시인사이드 갤러리

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

갤러리 본문 영역

이거 푸는사람 천재

프갤러(222.111) 2024.05.18 01:41:20
조회 109 추천 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/03 - -
2709608 늬들 dto는 무슨 용도로 쓰냐 ㅇㅇ? [10] 포항의봄갤로그로 이동합니다. 06.08 64 0
2709607 그냥 si 지박령으로 사는중 [3] 클갤(118.235) 06.08 59 0
2709606 탈주니어 애들 신기하긴함 [2] ㅇㅇ(172.226) 06.08 66 0
2709605 기분이 좋을땐 리듬에 맞춰 냥덩이 흔들어봥~❤+ ♥냥덩수면과학연구소♥갤로그로 이동합니다. 06.08 28 0
2709604 나님 뽀송냥덩✨으로 변신 완료❤+ ♥냥덩수면과학연구소♥갤로그로 이동합니다. 06.08 28 0
2709603 Ai야덩리얼개씨발혁신이네걍ㅋㅋ곧옷이의미없아질때가올듯 보법E노무현갤로그로 이동합니다. 06.08 34 0
2709602 나이 32살 국비 지원 교육 전망 어떠냐?? [6] ㅇㅇ(106.101) 06.08 103 0
2709601 관문이 많을수록 좋은회사임 클갤(220.88) 06.08 40 0
2709600 너희들 주니어 코드 리뷰 어케해주냥? ㅇㅅㅇ [2] AppHiki갤로그로 이동합니다. 06.08 64 0
2709599 코테없는 회사는 거르라는데 맞냐 [3] ㅇㅇ(172.226) 06.08 83 0
2709598 소스가 같으면 환경문제 외워라 프갤러(106.101) 06.08 40 0
2709597 앱히키 같은 동료 구하는 법 ㅇㅅㅇ 나트륨찡갤로그로 이동합니다. 06.08 37 0
2709596 어제오늘 Langchain 파이썬으로 배포한 게이들 주목 히렌십련갤로그로 이동합니다. 06.08 48 0
2709595 자바책 다시보면서 깨달았어 ㅇㅇ(14.38) 06.08 42 0
2709593 사업 아이디어 평가 좀요 부자가 될 수 있을까요? 딘퐁갤로그로 이동합니다. 06.08 40 0
2709591 메이플+리니지 3클라+넷플릭스+vscode 컴터 견적좀 짜주세요 ㅇㅇ(223.38) 06.08 31 0
2709590 나도 뤼튼 비슷한거 만들면 440억 투자받을수있음 ? [3] 피에로가르뎅갤로그로 이동합니다. 06.08 55 0
2709589 냥덩이 같은 후임 구하는 법 ㅇㅅㅇ 나트륨찡갤로그로 이동합니다. 06.08 46 0
2709588 뤼튼 같은 기업이 투자받을 수 있던 이유가 뭐임? [2] 딘퐁갤로그로 이동합니다. 06.08 70 0
2709585 뤼튼 250억 투자 더 받앗다고한다 [2] 헬마스터갤로그로 이동합니다. 06.08 80 1
2709584 앱히키 같은 후임 구하는 법 ㅇㅅㅇ 나트륨찡갤로그로 이동합니다. 06.08 43 0
2709583 초코냥 같은 후임 구하는 법 AppHiki갤로그로 이동합니다. 06.08 42 0
2709582 나트륨은 알고리즘 인공지능의 권위자 ㅇㅅㅇ 나트륨찡갤로그로 이동합니다. 06.08 45 0
2709580 초코냥 같은 후임 어디서 못구하나 포항의봄갤로그로 이동합니다. 06.08 42 0
2709579 나님 지금 조금 야한상태.. 다 벗엇어양.. ♥냥덩수면과학연구소♥갤로그로 이동합니다. 06.08 39 0
2709578 누가 나님꺼 빨아주는거야? [2] ♥냥덩수면과학연구소♥갤로그로 이동합니다. 06.08 47 0
2709575 첩보에 의하면 냥덩 나이는 30대 극초반 발명도둑잡기갤로그로 이동합니다. 06.08 43 0
2709574 나 딱국이고, 앞으로 난 영웅이다 프리덤건담갤로그로 이동합니다. 06.08 53 0
2709573 나씻주준✨ ♥냥덩수면과학연구소♥갤로그로 이동합니다. 06.08 43 0
2709572 전산직은 비전공자는 못함? [1] 프갤러(180.64) 06.08 58 0
2709568 남자를 죽여버리고 싶을정도로 사랑하는 여자 없나 딱국(61.99) 06.08 54 0
2709566 개발할때 화면분할 많이씀? [2] ㅇㅇ(106.101) 06.08 88 0
2709564 아 시발.. ㅠㅠ 보지 좋아 ㅠㅠ 딱국(61.99) 06.08 62 0
2709563 닭장녀 닭장ㅂㅈ 냄새맡구 핥구싶당 딱국(61.99) 06.08 48 0
2709562 나 피에로님 질문받는가르뎅 흠냐롱갤로그로 이동합니다. 06.08 45 0
2709560 4050 좌빨틀딱들 빨리 좀 죽어라 [1] ♥냥덩수면과학연구소♥갤로그로 이동합니다. 06.08 57 0
2709559 닭장녀랑 ㅈㄴ 섹스하고싶다 [1] 딱국(61.99) 06.08 67 0
2709558 남자가 돈이 많고 여자가 존나 이쁘고 부질없다 [3] 류류(203.229) 06.08 75 2
2709556 스테이블 디퓨전 빌드중 ㅇㅅㅇ [2] 초코냥갤로그로 이동합니다. 06.08 74 0
2709555 여자가 나이 30넘게 애새끼 싸지르니까 조현병 낳는거 [1] 류류(203.229) 06.08 65 2
2709554 인서울 컴공야간대학원 나왔는데도 이직 힘드네 [4] ㅇㅇ(211.36) 06.08 121 1
2709552 (240608) 프갤 정신병자 목록.txt ♥냥덩수면과학연구소♥갤로그로 이동합니다. 06.08 71 0
2709551 초크 씻어내고 보니 구멍이 생각보다 크구나 [3] 흠냐롱갤로그로 이동합니다. 06.08 66 0
2709550 플러터 웹 버그땜에 며칠째 기력을 잃으시다. [7] 헬마스터갤로그로 이동합니다. 06.08 81 0
2709549 [국가기밀] 오물 풍선 방지 작전계획 101 전격 공개 발명도둑잡기갤로그로 이동합니다. 06.08 62 0
2709547 슈카갤에 글썼다 썰렸습니다 [3] 헬마스터갤로그로 이동합니다. 06.08 74 0
2709546 adhd환자인데 개발자 할수있을까? [4] 프갤러(125.141) 06.08 80 1
2709545 야놀자 클라우드 직접 하네 [1] 발명도둑잡기갤로그로 이동합니다. 06.08 63 0
2709543 병신 갤러리 폐쇄 해라 [2] 프갤러(58.76) 06.08 74 3
2709541 나 딱지 리마 2급도 합격 [1] 딱지(211.234) 06.08 62 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2