void CheckValidity(int *tour, char *text)
{
  int visited[NUM_CITIES + 1];
  int i;
  
  for(i = 0; i <= NUM_CITIES; i++)
    visited[i] = 0;

  for(i = 0; i < NUM_CITIES; i++)
  {
    if(visited[tour[i]] == 1)
    {
      printf("ERROR:Invalid path generated:<%s>,city %d repeated\n" ,text, tour[i] );
      printTour(tour);
      exit(0);
    }
    visited[tour[i]] = 1;
  }

  for(i = 1; i <= NUM_CITIES; i++)
  {
    if(visited[i] == 0)
    {
      printf("ERROR:Invalid path generated:<%s>, city %d not present\n", text, i);
      printTour(tour);
      exit(0);
    }
  } 
}
int main(){
   initGraphCity();
   initTour(&bestTour);
   bestTour.length = INF;
   dfs();
   printTour(&bestTour);
   return 0;
}
Ejemplo n.º 3
0
// Compute an eulerian tour
void Graph::computeTour()
{
	if(tourExists())
	{
		output << std::endl << "Tour exists! Hooray!" << std::endl << std::endl;
		findCycles();
		mergeCycles();
		printTour();
	}
	else
	{
		output << "No Eulerian tour available." << std::endl;
		return;
	}
}
Ejemplo n.º 4
0
void checkTour( long int *t ) 
/*    
      FUNCTION:       make a simple check whether tour *t can be feasible
      INPUT:          pointer to a tour
      OUTPUT:         none
*/
{
    long int   i, sum=0;

    for( i = 0 ; i < n ; i++ ) {
	sum += t[i];
    }
    if ( sum != (n-1) * n / 2 ) {
	fprintf(stderr,"Next tour must be flawed !!\n");
	printTour( t );
	exit(1);
    }
}
Ejemplo n.º 5
0
int main()
{
	FILE *fp; /* Standard 파일 구조체 */
	int t, m, n, i; 
	point start; /* 나이트 첫 위치 */
	fp = fopen("input.txt", "r"); /* 파일 읽기 모드 */
	if (fp == NULL) return -1; /* 예외 처리 */
	fscanf(fp, "%d", &t); /* 데이터의 갯수 읽음 */
	while (t--) 
	{
		fscanf(fp, "%d %d %d %d", &m, &n, &start.y, &start.x); /* 데이터 읽음 */
		memset(board, 0, sizeof(int)*(MAXSIZE*MAXSIZE)); /* 체스판 초기화 */
		memset(path, 0, sizeof(int)*(MAXSIZE*MAXSIZE)); /* 투어 경로 초기화 */
		board[start.y][start.x] = MARK; /* 시작 위치 표시 */
		path[start.y][start.x] = 1; /* 투어 경로 표시 */

		knightTour(m, n, start, 1); /* 나이트 투어 */

		if(checkPath(m,n)) printTour(m, n); /* 투어 경로 존재시 출력 */
		else printf("0\n"); /* 투어 경로 존재하지 않으면 '0' 출력 */
	}
	fclose(fp); /* 파일 닫음 */
	return 0; /* 프로그램 종료 */
}