내가 C랑 알고리즘은 배워서 다익스트라 알고리즘을 C로는 구현했거든? 근데 요즘 하고있는 윈도우API로 다시 구현할려는데 도저히 하나도 모르겠다...

좀 도와줘요 형님들

#include <stdio.h> 

#include <string.h> 


#define N 10

#define M 9999


int a[N+1][N+1]={ 

{0,0,0,0,0,0,0,0,0,0,0}, 

{0,0,1,M,M,M,M,M,M,M,M},//1

{0,1,0,1,M,M,M,M,M,M,M},//2

{0,M,1,0,1,M,M,M,M,M,M},//3

{0,M,M,1,0,1,M,M,M,M,M},//4

{0,M,M,M,1,0,1,M,M,M,M},//5

{0,M,M,M,M,1,0,1,M,M,M},//6

{0,M,M,M,M,M,1,0,1,M,M},//7

{0,M,M,M,M,M,M,1,0,1,M},//8

{0,M,M,M,M,M,M,M,1,0,1},//9

{0,M,M,M,M,M,M,M,M,1,0}};//10

// 1.2.3.4.5.6.7.8.9.10


typedefstruct { 

char *state; 

int state_num; 

}SubType; 


SubType subway[N+1]={"null",0,"집",1,"편의점",2,"PC방",3,"당구장",4,"학교",5,"미용실",6, 

"친구집",7,"학원",8,"식당",9,"시장",10}; 


int main(void) 

int j,k,p,start,end,min,i=0,count=0, 

    leng[N+1], // 정점까지의 거리

    v[N+1], //확정 플래그 

    index[N+1]; 


    start=subway[1].state_num; // 시작점 입력


for(k=1;k<=N;k++) // 초기화

    { 

        leng[k]=M;   

        v[k]=0; 

    } 


    leng[start]=0;  /* 시작점은 표시하지 않는다 */

    index[start]=0;  


for(j=1;j<=N;j++) 

    { 

        min=M; 


for(k=1;k<=N;k++) // 최단거리 정점을 찾는다

        { 

if(v[k]==0 && leng[k]<min) 

            { 

                p=k; 

                min=leng[k]; 

            } 

        } 


        v[p]=1; // 최소인 정점을 확정


if(min==M) 

        { 

            printf("그래프가 연결되어 있지 않다\n"); 

return1; 

        } 


// p를 경유해서 k에 이르는 거리가 지금까지의 최단 경로보다 작으면 갱신 

for(k=1;k<=N;k++) 

        { 

if((leng[p]+a[p][k])<leng[k])  

            { 

                leng[k]=leng[p]+a[p][k]; 

                index[k]=p; 

            } 

        } 

    } 


for(j=2;j<=N;j++) // 도착 경로 출력 함수

    { 

        p=j; 

while(index[p]!=0) 

        { 

            printf("%s -> ",subway[index[p]].state); 

            p=index[p]; 

        } 

        printf("\n");     

    } 

return0; 


이거는 내가 짠 다익스트라 알고리즘