7 2 漢密爾頓迴路 25分

2021-10-12 05:00:39 字數 1343 閱讀 2381

題解**

著名的「漢密爾頓(hamilton)迴路問題」是要找乙個能遍歷圖中所有頂點的簡單迴路(即每個頂點只訪問 1 次)。本題就要求你判斷任一給定的迴路是否漢密爾頓迴路。

首先第一行給出兩個正整數:無向圖中頂點數 n(22​​ ⋯ v​n​​

其中 n 是迴路中的頂點數,v​i​​ 是路徑上的頂點編號。

對每條待檢迴路,如果是漢密爾頓迴路,就在一行中輸出"yes",否則輸出"no"。

6106

2341

5253

1411

6631

2456

7514

3625

6514

3629

6216

3452

6412

5176

1345

2676

1254

31

yes

nono

noyes

no

採用鄰接矩陣儲存

先確定輸入資料的個數是否等於頂點數+1

訪問完每個頂點後標記

判斷首尾頂點是否一致

建立二維陣列進行鄰接矩陣的儲存,連通有邊則記為1,否則為0。再判斷輸入個數時候為定點數+1,輸入的相鄰資料時候有邊以及最後是否能回到原點。

if

(迴路點不等於頂點 +1)

if(迴路相鄰頂點之間沒有邊)

回不到原點同樣沒有迴路。

#include

#include

#include

#include

#include

using

namespace std;

intmain()

int p;

cin >> p;

int k;

int weizhi;

for(

int i =

0; i < p; i++

)for

(int j =

0; j < k; j++

)else

}// 是否重複輸入

if(ans[weizhi])}

ans[weizhi]=1

;// 訪問過該點標記為1

pre = weizhi;

// 起始位置更換為當前位置}if

(flag)

printf

("yes\n");

else

printf

("no\n");

}return0;

}

漢密爾頓迴路 (25 分)

著名的 漢密爾頓 hamilton 迴路問題 是要找乙個能遍歷圖中所有頂點的簡單迴路 即每個頂點只訪問 1 次 本題就要求你判斷任一給定的迴路是否漢密爾頓迴路。首先第一行給出兩個正整數 無向圖中頂點數 n 2n 其中 n 是迴路中的頂點數,對每條待檢迴路,如果是漢密爾頓迴路,就在一行中輸出 yes ...

漢密爾頓迴路 25分

著名的 漢密爾頓 hamilton 迴路問題 是要找乙個能遍歷圖中所有頂點的簡單迴路 即每個頂點只訪問 1 次 本題就要求你判斷任一給定的迴路是否漢密爾頓迴路。輸入格式 首先第一行給出兩個正整數 無向圖中頂點數 n 2其中 n 是迴路中的頂點數,vi是路徑上的頂點編號。輸出格式 對每條待檢迴路,如果...

漢密爾頓迴路

問題表面跟尤拉迴路是差不多的,但至今也沒有人能給出漢密頓迴路的充分必要條件。老師說是什麼n p問題。反正就是沒有得證,特別難的意思。漢密爾頓路 對於乙個連通圖,如果你能夠從乙個點開始,然後不重複地走過所有的點,這個路就是漢密爾頓路。漢公尺爾頓迴路 對於乙個連通圖,如果你能夠從乙個點開始,然後不重複地...