디시인사이드 갤러리

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

갤러리 본문 영역

이거 푸는사람 천재

프갤러(222.111) 2024.05.18 01:41:20
조회 151 추천 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/14 - -
AD 디지털 액세서리 기간한정 세일! 운영자 25/07/11 - -
2871040 농부가 된 임베디드 프로그래머 [1] 발명도둑잡기(118.216) 07.11 48 0
2871039 제미니 교육시키는 중 ㅎㅎ ㅁㅌ겟다 루비갤로그로 이동합니다. 07.11 38 0
2871037 나님 소통합니당 질문질 받웅⭐+ [1] ♥천상천하유아독존경화수월냥덩♥갤로그로 이동합니다. 07.11 38 0
2871036 나님 왤케 특별하실깡? ♥천상천하유아독존경화수월냥덩♥갤로그로 이동합니다. 07.11 31 0
2871035 한가인이 남편에게 절대 하지 않는다는 것 발명도둑잡기(118.216) 07.11 58 0
2871034 네, 오늘 다국어 입력기 설계를 주제로 나눈 대화를 요약해 드리겠습니다. [1] 루비갤로그로 이동합니다. 07.11 61 0
2871033 돌대가리 제미니.. 궤변을 늘어놓네 [1] 루비갤로그로 이동합니다. 07.11 52 0
2871032 보통 TCP 4계층에서 바이트 기반이라고 표현하지 않나 [2] ㅆㅇㅆ(124.216) 07.11 68 0
2871031 ❤✨☀⭐⚡☘♥+나님 시작합니당♥+☘⚡⭐☀✨❤ ♥냥덩이♥갤로그로 이동합니다. 07.11 28 0
2871030 골때리는 제미니 ㅎㅎ 루비갤로그로 이동합니다. 07.11 30 0
2871028 윈도우, 아이폰, 안드로이드폰에 주기적으로 스크린샷 찍어서 본사로 전송능 발명도둑잡기(118.216) 07.11 49 0
2871026 제로카피의 개념을 잘못 이해하고 있는듯 [8] 프갤러(59.14) 07.11 84 1
2871025 앱 출시하는거 너무 고통스럽다 [2] 프갤러(121.162) 07.11 52 0
2871024 노트북에 리눅스 세팅해서 사용한지 몇주 되었는데 [2] 프갤러(221.167) 07.11 49 0
2871023 "재벌도 요구르트 뚜껑 핥아먹냐"는 글 내가 일기에 최초로 쓴 사람이다 [2] 발명도둑잡기(118.216) 07.11 31 0
2871022 함수스택 제대로 쓸 줄 모르면 c나 cpp 만지면 안되는구나 [2] ㅇㅇ(118.235) 07.11 62 0
2871021 내가 컴딸배였구나 [2] 개멍청한유라갤로그로 이동합니다. 07.11 44 0
2871019 회사에서 모든 AI 서비스 다 결제해준단다 [1] 프갤러(211.234) 07.11 81 0
2871018 프로그래머의 도구 같이 나눔해봐용 [1] 익명의따당이갤로그로 이동합니다. 07.11 70 0
2871017 챗티씨 모바일웹 이미지 업로드 막아놨더라 헬마스터갤로그로 이동합니다. 07.11 34 0
2871014 개발자 <<< 비전공자, 전공자 차이 심함? [3] 프갤러(210.205) 07.11 96 0
2871013 형님들 api키는 어떻게 쓰는건가요 [1] ㅇㅇ(124.51) 07.11 75 0
2871012 소딸배와 중딸배가 싸워요 [10] 개멍청한유라갤로그로 이동합니다. 07.11 83 0
2871011 그래 나 오타쿠다 ㅇㅅㅇ... [3] 초코냥갤로그로 이동합니다. 07.11 53 0
2871009 "윤석열 외환죄 입증 불가? 1983년 '간첩죄처벌' 대법원판례 발명도둑잡기(118.235) 07.11 28 0
2871007 다시 VBA의 세계로 돌아가니 [3] 슈퍼막코더(126.179) 07.11 57 0
2871006 윤석열 ㅋㅋㅋㅋㅋ [2] 발명도둑잡기(118.235) 07.11 48 0
2871005 개발자는 정신병을 조심해야하나봐 [3] ㅇㅇ(121.162) 07.11 76 2
2871004 ca229랑 앤드류응 코세라 기계학습 강의중에 뭐들어야할까요 [1] 프갤러(210.104) 07.11 59 0
2871003 어린 여자애 알몸이 최고임 ㅇㅅㅇ 류류(118.235) 07.11 56 0
2871001 TCP 자체가 바이트 기반이라 결국 버퍼 복사 파싱이 맞지 않나 [7] ㅆㅇㅆ(124.216) 07.11 96 0
2871000 러스트 ada 할 생각 때려치고 하던거나 잘해. 프갤러(59.16) 07.11 34 1
2870999 AI 써서 완전 AI로만 코딩할 수 있냐? 절대 안됨 [3] ㅆㅇㅆ(124.216) 07.11 59 0
2870998 뉴프로 구글링시 상위권 선점 안내 [6] 헬마스터갤로그로 이동합니다. 07.11 61 0
2870997 여름철 내 피부냄새 확인하는 방법 [1] ㅇㅇㅇㅇ(115.144) 07.11 45 0
2870996 국가 공인 기사단장의 이름으로 명한다 [6] 개멍청한유라갤로그로 이동합니다. 07.11 63 0
2870995 아아 조센징들이 또 마차를 함부로 타는구나 [6] 개멍청한유라갤로그로 이동합니다. 07.11 45 0
2870994 8월의 크리스마스 [1] 개멍청한유라갤로그로 이동합니다. 07.11 43 0
2870993 Ada 역주행을 하다니 ㅎㅎ 루비갤로그로 이동합니다. 07.11 39 0
2870992 대규모 인공지능 때문에 Ada가 뜨는구나 [1] 루비갤로그로 이동합니다. 07.11 39 0
2870991 tcp 통신 구현 [21] ㅇㅇ(106.241) 07.11 88 0
2870989 AI가 적극적으로 침투하려는 곳이 기회의 장임. [5] ㅆㅇㅆ(124.216) 07.11 94 0
2870987 인권 검찰 근황 발명도둑잡기(118.235) 07.11 32 0
2870985 허리가 아파.. 넘어져서 쓸렸데 물리치료사가. 넥도리아(223.38) 07.11 29 0
2870984 동얀구청 시장한테 따진다. 2020년도 10월에 시장pc설치해줌 넥도리아(223.38) 07.11 26 0
2870983 ❤✨☀⭐⚡☘♥+나님 시작합니당♥+☘⚡⭐☀✨❤ [1] ♥냥덩이♥갤로그로 이동합니다. 07.11 34 0
2870981 ai가 침투못하는 진로 추천좀부탁드립니다 [6] 노력하는자갤로그로 이동합니다. 07.11 92 0
2870979 의사가 MRI CT 찍으라던데 [3] 넥도리아(175.196) 07.11 46 0
2870977 러스트할바엔 Ada 할바엔 C++ 하고 말지. 프갤러(59.16) 07.11 42 0
2870976 1만년뒤에 초속 1000km 전투기 나온다 vs 안나온다  [2] ㅇㅇ(118.235) 07.11 43 0
뉴스 '전국노래자랑', 7/13(일) 충남 홍성군 편! 신흥 트롯황태자 김용빈 출격! 디시트렌드 07.11
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2