windows api로 다익스트라 알고리즘 구현하기 질문.

jins8160의 이미지

제가 c랑 알고리즘을 공부해서 c로 다익스트라 알고리즘을 만들어봤는데, 이제 하기 시작한 windows 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
 
typedef struct {
 char *state;
 int state_num;
}SubType;
 
SubType subway[N+1]={"null",0,"신평",1,"하단",2,"당리",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");
			return 1;
		}
 
		// 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");	
	}
	return 0;
}