SSL 1438 騎馬修柵欄 P2731

2021-10-13 13:35:56 字數 1328 閱讀 4638

time limit:1000ms memory limit:65536k

total submit:108 accepted:43

農民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行,每行乙個整數,依次表示路徑經過的頂點號。注意資料可能有多組解,但是只有上面題目要求的那一組解是認為正確的。

91 2

2 33 4

4 24 5

2 55 6

5 74 612

3425

4657

uscao 3.2

用鄰接矩陣+dfs求尤拉迴路,

同樣的邊可能存在多條,鄰接矩陣存邊時要儲存邊數,dfs時也要一條條地刪邊,且不用恢復。

從第乙個奇點開始dfs,若無則從點1開始,遞迴儲存路徑,倒著輸出。

#include

#include

#include

#include

#include

using

namespace std;

int n,m,x,y,a[

510]

[510

],b[

510]

,c[1050

],t;

voidin(

)}intdfs

(int f)

}c[++t]

=f;}

intmain()

return0;

}}dfs(1)

;for

(;t>

0;t--

)return0;

}

SSL 1438 P2731 騎馬修柵欄

john 是乙個與其他農民一樣懶的人。他討厭騎馬,因此從來不兩次經過乙個柵欄。john 的農場上一共有m個柵欄,每乙個柵欄連線兩個頂點,頂點用1到500標號 雖然有的農場並沒有那麼多個頂點 乙個頂點上至少連線1個柵欄,沒有上限。兩頂點間可能有多個柵欄。所有柵欄都是連通的 也就是你可以從任意乙個柵欄到...

洛谷P2731騎馬修柵欄

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

P2731 騎馬修柵欄 (尤拉路徑)

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