1375 騎馬修柵欄 fence

2022-07-24 19:42:13 字數 1114 閱讀 8265

農民john每年有很多柵欄要修理。他總是騎著馬穿過每乙個柵欄並修復它破損的地方。

john是乙個與其他農民一樣懶的人。他討厭騎馬,因此從來不兩次經過乙個乙個柵欄。你必須編乙個程式,讀入柵欄網路的描述,並計算出一條修柵欄的路徑,使每個柵欄都恰好被經過一次。john能從任何乙個頂點(即兩個柵欄的交點)開始騎馬,在任意乙個頂點結束。

每乙個柵欄連線兩個頂點,頂點用1到500標號(雖然有的農場並沒有500個頂點)。乙個頂點上可連線任意多(≥1)個柵欄。所有柵欄都是連通的(也就是你可以從任意乙個柵欄到達另外的所有柵欄)。

你的程式必須輸出騎馬的路徑(用路上依次經過的頂點號碼表示)。我們如果把輸出的路徑看成是乙個500進製的數,那麼當存在多組解的情況下,輸出500進製表示法中最小的乙個 (也就是輸出第乙個數較小的,如果還有多組解,輸出第二個數較小的,等等)。 輸入資料保證至少有乙個解。

第1行:乙個整數f(1≤f≤1024),表示柵欄的數目;

第2到f+1行:每行兩個整數i,j(1≤=i,j≤500)表示這條柵欄連線i與j號頂點。

輸出應當有f+1行,每行乙個整數,依次表示路徑經過的頂點號。注意資料可能有多組解,但是只有上面題目要求的那一組解是認為正確的。

9

1 22 3

3 44 2

4 52 5

5 65 7

4 6

123

4254

657和一筆畫一樣

#includeusing

namespace

std;

#define n 1000+1

intw[n][n],n,du[n],maxx,ans[n],tot;

void dfs(int

x) ans[++tot]=x;

}int

main()

int sta=0

;

for(int i=1;i<=maxx;i++)

if(du[i]%2==1

)

if(sta==0

)

}dfs(sta);

for(int i=tot;i>=1;i--)

cout

}

1375 騎馬修柵欄 fence

農民john每年有很多柵欄要修理。他總是騎著馬穿過每乙個柵欄並修復它破損的地方。john是乙個與其他農民一樣懶的人。他討厭騎馬,因此從來不兩次經過乙個乙個柵欄。你必須編乙個程式,讀入柵欄網路的描述,並計算出一條修柵欄的路徑,使每個柵欄都恰好被經過一次。john能從任何乙個頂點 即兩個柵欄的交點 開始...

騎馬修柵欄 fence 鏟雪車(snow)

時間限制 1 sec 記憶體限制 128 mb 農民john每年有很多柵欄要修理。他總是騎著馬穿過每乙個柵欄並修復它破損的地方。john是乙個與其他農民一樣懶的人。他討厭騎馬,因此從來不兩次經過乙個乙個柵欄。你必須編乙個程式,讀入柵欄網路的描述,並計算出一條修柵欄的路徑,使每個柵欄都恰好被經過一次。...

騎馬修柵欄

對剛學的尤拉迴路的練習。錯點 萬一是尤拉路徑不是尤拉迴路的話,不能只選乙個最小的點當起點。要選度數為奇數的兩個點中較小的乙個。2.1 不一定在連通圖內,不能單純的把 1 當做起點。3.見 中的注釋。include include include includeusing namespace std ...