디시인사이드 갤러리

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

갤러리 본문 영역

이거 푸는사람 천재

프갤러(222.111) 2024.05.18 01:41:20
조회 82 추천 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/05/27 - -
공지 프로그래밍 갤러리 이용 안내 [69] 운영자 20.09.28 35204 62
2706013 주 3회 회식하는 회사 ㅁㅌㅊ? 프갤러(58.143) 02:42 5 1
2706008 박스 줍는 노인 입갤이요 ㅇㅅㅇ ㅇㅅㅇ(106.102) 02:08 7 0
2706006 얘들아 국내주식 다빼라 북한 눈 뒤집어졌다. ㅇㅇ(49.142) 02:05 21 0
2706004 오라클 기본질문.. 테이블 고유값id컬럼에 시퀀스적용할때 트리거 프갤러(125.133) 01:58 12 1
2706003 내 기본을 찾아 기본에 충실하자 ㅇㅅㅇㅋ [7] 나트륨찡갤로그로 이동합니다. 01:47 41 0
2706002 폭파될 거 같아 폭파! 나트륨찡갤로그로 이동합니다. 01:46 19 0
2706001 나이처먹고 주제 모르는 개발자 취준 친구 손절 프갤러(220.123) 01:41 36 0
2706000 인생은 발버둥치면서 앞으로 나아가는 법 [3] 쇼팬하우어갤로그로 이동합니다. 01:40 24 1
2705999 인생은 노력이더라 [1] 뒷통수한방(1.213) 01:27 34 1
2705998 학회 발표 아무나 하는거 아님? [3] 프갤러(218.53) 01:15 34 0
2705997 살기 싫다...그냥 계속 계속 쉬는 중... [11] 나트륨찡갤로그로 이동합니다. 01:09 61 0
2705996 정부지원 광고는 왜 하는거임 뒷통수한방(1.213) 01:06 15 0
2705995 핸드폰 바꿨어 ㅇㅅㅇ [1] 류류(210.217) 01:01 33 0
2705994 서울에도 똥풍선 내렸다는데? [2] 헬마스터갤로그로 이동합니다. 00:59 34 0
2705992 멍유씨 죄책감이 더 어리석은겁니다 [4] 쇼팬하우어갤로그로 이동합니다. 00:51 30 0
2705990 북한에 삐라 날린거 사과하면되지않냐? [7] 헬마스터갤로그로 이동합니다. 00:41 53 0
2705989 우리 학교에 똥풍선 내렸노 ㅋㅋㅋㅋㅋㅋ [1] 딘퐁갤로그로 이동합니다. 00:31 80 0
2705986 마케팅이야 말로 인간의 고유한 성스러운 능력임 [1] 딘퐁갤로그로 이동합니다. 00:26 21 0
2705985 만약에 당신이 후원한 금액이 100% 북한 쌀밥 먹는데 지원된다면 [1] 딘퐁갤로그로 이동합니다. 00:22 22 0
2705984 마케팅책은 마케팅빨로 유명해진게 많던데 [1] 버거띠갤로그로 이동합니다. 00:20 22 0
2705983 it공부 어플 만들어주는거 어떠냐 [4] 버거띠갤로그로 이동합니다. 00:16 68 0
2705982 커리어 하니까 캐리어 생각나면 딸피? [2] 버거띠갤로그로 이동합니다. 00:13 22 0
2705981 커리어 드립이 나오게 된 건 ㅇㅇ(210.117) 00:11 26 0
2705980 공부를 하지않았다는 죄책감 [6] 멍청한유라ㅋ갤로그로 이동합니다. 00:10 47 0
2705979 토요일은 누군가 나의 하루를 훔쳐가는것만 같다. [2] 멍청한유라ㅋ갤로그로 이동합니다. 00:09 25 0
2705978 내일은 꼭 공부해야지 [9] 멍청한유라ㅋ갤로그로 이동합니다. 00:07 40 0
2705977 북에는 요즘에 식인사건 늘어난다던데 [1] 프갤러(49.142) 00:06 30 0
2705976 정답은 "유투버"다 [2] 버거띠갤로그로 이동합니다. 00:06 33 0
2705975 음.. 월급쟁이론 답이없다는거다 [6] 버거띠갤로그로 이동합니다. 00:04 47 1
2705974 대학교 1학년 파이썬 시험 57점만점중에 [3] 비돈갤로그로 이동합니다. 00:00 50 0
2705973 원래 개발자는 연봉보다 커리어가 더 중요함? [8] 딘퐁갤로그로 이동합니다. 06.01 100 0
2705972 아가들아 이것만 알아라 프갤러(121.172) 06.01 38 1
2705971 4년차 6000 중견이직햇는데 대기업마렵네 ㄹㅇ [2] 프갤러(14.37) 06.01 55 0
2705970 주말에 개발 및 공부 안하는 페이크 디벨로퍼들 [2] 멍청한유라ㅋ갤로그로 이동합니다. 06.01 51 0
2705969 Ardutosh - Classic Macintosh style deskt 발명도둑잡기갤로그로 이동합니다. 06.01 9 0
2705967 나도 물경력 각인데 [7] 아스카영원히사랑해갤로그로 이동합니다. 06.01 74 0
2705966 나는 병신이야 [2] 미쿠쟝마지스키갤로그로 이동합니다. 06.01 25 0
2705965 프갤만화가 ㅡ 킬티 제로 코딩낭인(58.236) 06.01 16 0
2705963 항성은 우주문명의 주유소임 ♥끙르가즘냥덩♥갤로그로 이동합니다. 06.01 13 0
2705962 [한국ICT인재개발원] [전액 정부지원] 자바 개발자 교육과정 allforyoung(14.32) 06.01 25 0
2705961 내가 봤던 역대 최고의 포폴은 [3] ㅇㅇ(210.117) 06.01 95 0
2705960 나도 미소녀 임신시키고 싶음 ㅇㅅㅇ 류류(210.217) 06.01 16 0
2705959 고졸 34세. 그냥 공무원 시험이 낫겠지? [4] 프갤러(218.234) 06.01 59 0
2705958 고향에 왔는데 아버지가 진짜 결혼할 생각 없냐고.. [13] 아스카영원히사랑해갤로그로 이동합니다. 06.01 65 0
2705957 너무 배고파서 두유 2개 흡입해버리셨다 [3] 헬마스터갤로그로 이동합니다. 06.01 21 0
2705956 회사에서 웹디자이너 따위가 말대꾸하면 무슨기분임? [1] ㅇㅇ(218.155) 06.01 34 0
2705955 나님 다시 누엇어양 ♥끙르가즘냥덩♥갤로그로 이동합니다. 06.01 15 0
2705954 오또케 나님께 말대꾸 따위 할수있냥거냐구웅~ ♥끙르가즘냥덩♥갤로그로 이동합니다. 06.01 14 0
2705953 아스카 보다 레이의 쫀득보지가 더 맛남 [2] ♥끙르가즘냥덩♥갤로그로 이동합니다. 06.01 44 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2