디시인사이드 갤러리

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

갤러리 본문 영역

이거 푸는사람 천재

프갤러(222.111) 2024.05.18 01:41:20
조회 124 추천 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/10 - -
2710589 아마 이번에 주문하는 케이스가 마지막 케이스가 되지 않을까 싶네요 ☆단비☆갤로그로 이동합니다. 06.10 87 6
2710588 난 이제 이력서 3개 내고 왔는데 255개 레전드네 [5] 프갤러(175.213) 06.10 135 0
2710587 나님 팬티만 입구 누움✨ ♥냥덩수면과학연구소♥갤로그로 이동합니다. 06.10 34 0
2710586 나님 하품했어양✨ 곧 주무실듯? ♥냥덩수면과학연구소♥갤로그로 이동합니다. 06.10 33 0
2710584 내일 아침에 나가기 싫다. [2] cvs.갤로그로 이동합니다. 06.10 44 0
2710583 비나이다 비나이다 한게 효과가 있었나봐요 ㅋㅋ ☆단비☆갤로그로 이동합니다. 06.10 146 5
2710582 개발자가 뭐가 어렵다는거임? [1] 프갤러(211.44) 06.10 77 0
2710581 용산 전자랜드 전파사 아저씨한테 이거 고쳐주세요 하면 엄청당황하냐? [1] 도리스아(119.195) 06.10 54 0
2710580 accessToken refresh 관리방법 [2] 프갤러(115.139) 06.10 79 0
2710579 포폴 빼곡하고 자세하게 적기 vs 요점만 적기 [3] ㅇㅇ(110.70) 06.10 60 0
2710578 사도광산 세계유산 보류‥정부 "강제동원 반영해야" 발명도둑잡기갤로그로 이동합니다. 06.10 19 0
2710577 백엔드도 경쟁률 지옥인데 안드로이드 앱개발도 지옥인가봐 [5] 프갤러(221.150) 06.10 144 0
2710576 식대 주는것도 보통 연봉으로 포함하나?? [4] 프갤러(118.129) 06.10 77 0
2710575 ㅇㅅㅇ [1] ♥냥덩수면과학연구소♥갤로그로 이동합니다. 06.10 33 0
2710574 러스트 악성분자가 나 음해하려고 주작기 돌려 자작극 펼치나보지 [7] ☆단비☆갤로그로 이동합니다. 06.10 117 5
2710573 프갤 망함?? ♥냥덩수면과학연구소♥갤로그로 이동합니다. 06.10 47 0
2710572 중소 지원 갯수 250개 달성 계속 지원하는중 [10] ㅇㅇ(112.150) 06.10 139 0
2710571 러스트 극성분자가 또 납션나 보군요 ☆단비☆갤로그로 이동합니다. 06.10 87 5
2710570 프로그래밍 갤러리는 마이너 갤러리 폭발을 지지합니다 헬마스터갤로그로 이동합니다. 06.10 34 0
2710568 회사에서 쓰레드 막 쓰는 사람 있냐 ㅇㅇ? [4] 포항의봄갤로그로 이동합니다. 06.10 64 0
2710567 제가 nimfsoft 운영자인데.. 제가 주작기 돌릴 이유가 없어요. [3] ☆단비☆갤로그로 이동합니다. 06.10 172 5
2710566 골목길 밴에서 여성들 우르르 내리는것 목격했다 헬마스터갤로그로 이동합니다. 06.10 40 0
2710565 나님 소통합니당❤+ 질문 받음⭐+ [4] ♥냥덩수면과학연구소♥갤로그로 이동합니다. 06.10 37 0
2710564 형들 파이썬 미니 프로젝트로 원하는 실력 좀 키우고 싶은데 방법이 있을까 [4] ㅇㅇ갤로그로 이동합니다. 06.10 60 0
2710563 깨끗하개❤+ 맑게⭐+ 자신있게✨ ♥냥덩수면과학연구소♥갤로그로 이동합니다. 06.10 26 0
2710562 옛날에 사용했던 리안리 PC-V1000 케이스 [10] ☆단비☆갤로그로 이동합니다. 06.10 60 0
2710561 디씨 도배기가 뭔가요 ? [2] 결국친선전까지진호날두갤로그로 이동합니다. 06.10 61 0
2710560 프갤념글은 쓰레기통이라 생각하고 항상 기대는 안하는데 ㅇㅇ(106.102) 06.10 54 0
2710559 코틀린or자바 문법 질문좀 드려여 [2] ㅇㅇ(125.242) 06.10 47 0
2710558 예술 하는 사람 중에 유리 멜탈이 꽤 있습니다 발명도둑잡기갤로그로 이동합니다. 06.10 17 1
2710557 애널은 수면영상이 흉작이네.. ♥냥덩수면과학연구소♥갤로그로 이동합니다. 06.10 28 0
2710556 벌렁벌렁 ♥냥덩수면과학연구소♥갤로그로 이동합니다. 06.10 34 0
2710555 집돌이는 집순이를 만나야하는듯 [5] AppHiki갤로그로 이동합니다. 06.10 76 0
2710554 RE100 시대를 맞아 프로그램도 에너지 효율을 따져야 프갤러(118.218) 06.10 42 0
2710553 애널의 수면영상✨ ♥냥덩수면과학연구소♥갤로그로 이동합니다. 06.10 28 0
2710552 왜 내가 가는분야마다 망하는 것 같나 [1] 프갤러(121.130) 06.10 56 0
2710551 내 머리는 상위 5퍼 안에 들어ㅇ? [2] 텬됴대한의아들갤로그로 이동합니다. 06.10 93 0
2710550 스트림이랑 스레드 공부하니까 ㅇㅇ(14.38) 06.10 49 0
2710549 먼닉가재맨여의도맨션부읽남철릭당신이몰랏던이야기우정잉사우스코리아실프texas 보법E노무현갤로그로 이동합니다. 06.10 27 0
2710548 솔직히니네나기다리잖아 [1] 보법E노무현갤로그로 이동합니다. 06.10 27 0
2710544 선풍기고쳣는데 회전이안된다 <- 뭔개소리임 [9] 프갤러(221.168) 06.10 70 0
2710543 여덩생있는갤럼있나?ㅋ내가섹토링좀해주고싶은데 보법E노무현갤로그로 이동합니다. 06.10 38 0
2710542 삶은 감자에 소금이냐 설탕이냐? [3] 프갤러(121.172) 06.10 51 1
2710541 신입 알려주기 싫은데 자꾸만 알려주게 되네 [3] 프갤러(59.16) 06.10 123 0
2710540 c# TCP 관련 질문있어요!!! [6] 프갤러(211.44) 06.10 66 0
2710539 올해는 선풍기 없이 바로 에어컨으로 넘어갈듯? ♥냥덩수면과학연구소♥갤로그로 이동합니다. 06.10 28 0
2710538 RE100 때문에 이제 한국산 수입 금지 예정 발명도둑잡기갤로그로 이동합니다. 06.10 25 0
2710537 홍사훈 "尹 '석유 브리핑', 제 7광구 넘겨주기 위한 빌드업?" 발명도둑잡기갤로그로 이동합니다. 06.10 37 0
2710536 나님 아직 선풍기도 안 씀 ㅇㅅㅇ ♥냥덩수면과학연구소♥갤로그로 이동합니다. 06.10 31 0
2710535 선풍기 고쳤는데 회전 안된다. [8] 도리스아 sky(119.195) 06.10 52 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2