1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <stdio.h>
#define TRUE 1
#define FALSE 0
 
#define MAX_VERTICES 7
#define INF 1000L
 
int weight[MAX_VERTICES][MAX_VERTICES]={
{0,29,INF,INF,INF,10,INF},
{29,0,16,INF,INF,INF,15 },
{INF,16,0,12,INF,INF,INF},
{INF,INF,12,0,22,INF,18},
{INF,INF,INF,22,0,27,25},
{10,INF,INF,INF,27,0,INF},
{INF,15,INF,18,25,INF,0}};
 
int selected[MAX_VERTICES];
int dist[MAX_VERTICES];
 
// 최소 dist[v] 값을 갖는 정점을 반환
int get_min_vertex(int n)
{
    int v,i;
    for ( i=0; i<n; i++ )
        if (!selected[i]) {
            v = i ;
        break;
        }
    for (i=0 ; i<n ; i++)
        if (!selected[i] && (dist[i] < dist[v])) v=i;
    return (v);
}
 
//
void prim(int s, int n)
{
    int i,u,v;
 
    for (u=0 ; u<n ; u++);
        {dist[u]=INF;selected[u]=FALSE;}
    dist[s]=0;
    for(i=0; i<n ; i++){
        u = get_min_vertex(n);
        selected[u]=TRUE;
        if( dist[u] == INF ) return;
        printf ("%d",u);
        for (v=0; v<n ; v++)
            if ( weight[u][v] != INF)
                if!selected[v] && weight[u][v] < dist[v] )
cs









아직 코드 읽는게 안 익숙해서 get_min_vertex 함수에서 !selected[i] 가 무슨 뜻인지 긴가민가해서 구글링으로 검색하려고 보니까 

'selected[i]가 초기화도 안되있는데 뭔 개떡같은 코드를 쓴거냐' 하는 어리석은 아이디어(역시 아는것만 보임;;개허접;;)로 5분정도 시간 날리다가 빡쳐서 일단 넘어감.

근데 밑에 prim 함수에서 dist[]랑 selected[]를 define 한 상수로 초기화시키는걸 보고

'이쉬방ㅇㅠ 요있었네ㅠ' 하면서 다시 get_min_vertex 함수로 가서 해석하기 시작함. 근데 해석해서 결론은 리턴이 0인데, 이게 prim함수에서만 초기화한거니까 결국 get_min_vertex함수는 현재로서는 prim 안에서만 쓸 수 있네 라고 깨달음..

여기서 1차 분노 > 그럴거면 get_min_vertex를 prim 밑에다 둬야지 나같은 프늅이들이 안 헷갈려하고, 숙련자(애초에 숙련자들은 안 보겠지마느.,ㅡ)들이 봐도 불편하지는 않으니까 밑에다 두는 게 낫지 않나 혼자 생각함

그리고 그 후로 쭉쭉 진행함



근데 

if!selected[v] && weight[u][v] < dist[v] )

여기 부분에서 다시 막힘

이유는 u=get_min_vertex(n) 부분을 보고, 다시 get_min_vertex로 돌아간 다음, 그제서야 get_min_vertex 함수의 의미를 이해하고 속으로 화내다가

위에서 이미 dist[]를 INF로 초기화 를 했었다는 걸 까먹고, '아니 정의도 안 된 dist[v]를 어떻게 하라는거야 X같네' 한 20분 동안 코드만 봄ㅋㅋㅋㅋ

그러다가 너무 화가 나서 프형들한테 도움을 청하려고 Color Scripter 에다가 분노의 책보고 베껴쓰기를 하는 도중 dist[]를 이미 초기화 했다는 걸 발견

Color Scripter에다가 쓴거 아까워서 여기다 붙여봄ㅎㅎ



결론 : 한 1시간 반 넘게 개뻘짓 한 후기임다ㅎㅎ 너무 허탈해서 이건 꼭 올려야겠다는 마음의 불평불만임다ㅎㅎ