디시인사이드 갤러리

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

갤러리 본문 영역

이거 푸는사람 천재

프갤러(222.111) 2024.05.18 01:41:20
조회 86 추천 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 - -
2705381 si파견 보도방에서 파견가게됐는데... 운영은 구체적으로 어떤일함?? [2] 프갤러(125.133) 06.01 83 0
2705380 전영록 밴드 - 사랑은 연필로 쓰세요 발명도둑잡기갤로그로 이동합니다. 06.01 23 0
2705379 전기 지우개 발명도둑잡기갤로그로 이동합니다. 06.01 23 0
2705378 블리치 바운트편 재미없네 [4] 멍청한유라ㅋ갤로그로 이동합니다. 06.01 54 0
2705377 개발 잘하는 법 알아냈다 [2] ㅇㅇ갤로그로 이동합니다. 06.01 90 1
2705376 뷰js 발음 조심해야겠다 [2] 금융오지마라갤로그로 이동합니다. 06.01 89 0
2705375 감옥에서 전기면도기 빼고 전자기기 못 쓰는구나 발명도둑잡기갤로그로 이동합니다. 06.01 29 0
2705374 금요일 저녁 ... 좋다.. it지겨움 금융오지마라갤로그로 이동합니다. 06.01 26 0
2705373 잠도 오지 않는 밤에 발명도둑잡기갤로그로 이동합니다. 06.01 26 0
2705372 인간 윈도우 발명도둑잡기갤로그로 이동합니다. 06.01 85 0
2705371 잠이오지않는밤이다. [3] 멍청한유라ㅋ갤로그로 이동합니다. 06.01 51 0
2705369 감옥에서 종이에 코딩을 하고 있겠지 [2] 발명도둑잡기갤로그로 이동합니다. 06.01 77 0
2705368 인텔 같은 초인텔리기업도 m1 같은칩 만드는데 반십년 걸림 ♥[19만]냥덩대장경♥갤로그로 이동합니다. 06.01 70 1
2705367 공감 능력 조절하는 유전자와 신경회로 따로 있다! 발명도둑잡기갤로그로 이동합니다. 06.01 31 0
2705366 si 파견지에서 뷰js 처음 봤는데 이거 원래 ui툴 없음? [9] 뭐임마갤로그로 이동합니다. 05.31 127 0
2705364 나님 왤캐 위대하실깡? [2] ♥[19만]냥덩대장경♥갤로그로 이동합니다. 05.31 56 0
2705363 삶의 목적을 찾으려는 것은 인간의 이성이다 발명도둑잡기갤로그로 이동합니다. 05.31 16 0
2705362 누가 냥덩이 때린거야? ♥[19만]냥덩대장경♥갤로그로 이동합니다. 05.31 43 0
2705360 나님 내일 진짜 재대로 쉰다는개 뭔지 보여줄개 ♥[19만]냥덩대장경♥갤로그로 이동합니다. 05.31 39 0
2705359 주말애 여행갔다온 피로가 아직 안풀렸나봄 ♥[19만]냥덩대장경♥갤로그로 이동합니다. 05.31 36 0
2705358 누가 자꾸 철지난 비추행동하냐 ♥[19만]냥덩대장경♥갤로그로 이동합니다. 05.31 41 0
2705357 모기땜애 막담피러 나가기 무섭당.. ♥[19만]냥덩대장경♥갤로그로 이동합니다. 05.31 39 0
2705356 구입한 나노키2 도착 발명도둑잡기갤로그로 이동합니다. 05.31 40 0
2705355 너 자신을 알라는 훈계나 우월함 과시 자만이 아닌 정말 따스한 조언임 [1] ♥[19만]냥덩대장경♥갤로그로 이동합니다. 05.31 40 0
2705354 파일명에 쓰면 안되는 문자 발명도둑잡기갤로그로 이동합니다. 05.31 44 0
2705353 박명수 "사랑이 모든걸 이긴다고? 생활고 못이겨" [1] 발명도둑잡기갤로그로 이동합니다. 05.31 51 0
2705352 신입 백엔드 6개월하고 초봉4천 겨우 취업함 [1] 프갤러(106.101) 05.31 177 0
2705351 헬지옥 sm [5] 클갤(220.88) 05.31 60 0
2705350 SI 프리 6 개월 경험자 입니다. [3] 프갤러(59.16) 05.31 109 0
2705349 si는 공통 설계가 잘되있어야 편한데 [1] 클갤(220.88) 05.31 61 0
2705348 Xjosen ㅡ 미인 코딩낭인(58.236) 05.31 22 0
2705347 뚱땡이들은 싫지만 [2] 멍청한유라ㅋ갤로그로 이동합니다. 05.31 46 0
2705346 이천수 아내 "원희룡 캠프 합류 때 '미쳤냐' 욕"…도운 이유는 발명도둑잡기갤로그로 이동합니다. 05.31 21 0
2705344 난 프갤애들이 잘됐으면 좋겠다 [2] ㅈㄹㄷ(118.235) 05.31 53 0
2705343 프갤가수 ㅡ 그랬나봐 [1] 코딩낭인(58.236) 05.31 19 0
2705340 [참고물] 최근 IT 관련 AI 썰... (기업입장 포함..) [2] +abcd3421갤로그로 이동합니다. 05.31 107 2
2705339 si 특 [1] 프갤러(211.234) 05.31 56 0
2705337 프갤가수 ㅡ 존재의 이유 코딩낭인(58.236) 05.31 17 0
2705336 프갤가수 ㅡ 당신이 그리워질 때 코딩낭인(58.236) 05.31 16 0
2705335 우리는 모두 호모다 ♥[19만]냥덩대장경♥갤로그로 이동합니다. 05.31 27 0
2705334 프갤가수 ㅡ 그 겨울의 찻집 코딩낭인(58.236) 05.31 16 0
2705333 Si 6시 정시 퇴근인데 [1] 프갤러(118.235) 05.31 75 0
2705332 C 언어 메모리 안정성 높이는 방법 알려준다. [2] 프갤러(59.16) 05.31 67 0
2705331 몽고DB 주식 거래량 왜 오라클 좆바름? [2] ㅇㅇ(211.235) 05.31 67 0
2705330 프갤가수 ㅡ 핑계 코딩낭인(58.236) 05.31 18 0
2705329 ㅅ김치남들ㅂㅅㅂㅅㅂ 프갤러(223.62) 05.31 22 0
2705328 주말에 전설의 쿵푸마스터 이소룡 영화를 보려구행 ♥[19만]냥덩대장경♥갤로그로 이동합니다. 05.31 20 0
2705327 방에 모기가 있다 발명도둑잡기갤로그로 이동합니다. 05.31 21 0
2705326 프갤가수 ㅡ 소녀시대 코딩낭인(58.236) 05.31 17 0
2705325 로보트개가 진짜 개집에서 나와 발명도둑잡기갤로그로 이동합니다. 05.31 16 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2