<html> <head> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/8.8.0/styles/railscasts.min.css"> [removed][removed] [removed]hljs.initHighlightingOnLoad();[removed] <title>하이라이팅 먹히나?</title> </head> <body> < pre>// // main2.c // Dijkstra // // Created by on 2015. 10. 15.. // Copyright © 2015년 . All rights reserved. // #include #define MAX_VERTEX 5 #define UC 9999 // Unconnected #define BOOL int #define TRUE 1 #define FALSE 0 /* * IsVisited : 방문했는가? * Parent : Parent 노드 * Distance : Start point 로부터의 거리 */ typedef struct tagVertex{ BOOL isVisited; int Parent; int Distance; }Vertex; //Sample int Data[MAX_VERTEX+1][MAX_VERTEX+1] = { //1 2 3 4 5 { 0, 0, 0, 0, 0, 0}, /*1*/{ 0, 0, 2, 4,UC,UC}, /*2*/{ 0, 2, 0, 1, 3,UC}, /*3*/{ 0, 4, 1, 0,UC, 2}, /*4*/{ 0,UC, 3,UC, 0, 1}, /*5*/{ 0,UC,UC, 2, 1, 0} }; Vertex Varr[MAX_VERTEX]; // print Table void print( ){ int i = 0; printf("V\tP\tD\tVisit\n"); for ( i = 1; i < MAX_VERTEX+1; i++ ) { printf("%d\t%d\t%d\t%s\n", i, Varr[i].Parent, Varr[i].Distance, Varr[i].isVisited==TRUE?"TRUE":"FALSE"); } puts(""); } int main( ) { int Start = 0; int End = 0; int minIndex = 0; int minVal = 9999; int i = 0; int j = 0; printf("시작과 끝?\n"); Start = 1; End = 5; // Initialize. for ( i = 1; i < MAX_VERTEX+1 ; i++ ) { Varr[i].isVisited = FALSE; Varr[i].Parent = Start; if(Data[Start][i]!=UC) Varr[i].Distance = Data[Start][i]; else Varr[i].Distance = UC; } print(); Varr[Start].Distance = 0; // Dijkstra for ( i = Start;i < MAX_VERTEX+1; i++ ) { minVal = 9999; for ( j = 1; j < MAX_VERTEX+1; j++ ) { if( !Varr[j].isVisited && Varr[j].Distance != UC ) { if ( Varr[j].Distance < minVal ) { minVal = Varr[j].Distance; minIndex = j; } } } // Vertex Select Varr[minIndex].isVisited = TRUE; for ( j = 1; j < MAX_VERTEX+1; j++ ) { if( !Varr[j].isVisited && Data[minIndex][j] != UC && Data[minIndex][j] != 0 ){ if (Data[Varr[j].Parent][j] > Varr[minIndex].Distance + Data[minIndex][j]) { Varr[j].Distance = Varr[minIndex].Distance + Data[minIndex][j]; Varr[j].Parent = minIndex; } } } print(); getchar(); } } </body>