farmer 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行,每行乙個整數,依次表示路徑經過的頂點號。注意資料可能有多組解,但是只有上面題目要求的那一組解是認為正確的。
輸入樣例#1: 複製
91 22 3
3 44 2
4 52 5
5 65 7
4 6
輸出樣例#1: 複製
1234254
657
題目翻譯來自nocow。
usaco training section 3.3
----------------------------------fenge————————————————————————
尤拉函式
書上有的!
大概按照書上的思路寫出來
竟然『最後乙個測試點tle了
應該是遞迴遞的太多了?!
我優化優化
暴哭終究de不出來bug了
我真的真的不明白為什麼tle
放個正解
#includeusingnamespace
std;
int a[1025][1025], b[1025
];int
n,m;
stack
s;void dfs(int
x) s.push(x);
}int
main()
int s = 1
;
for(int i = 1; i <= n; i++)
if(b[i] % 2 == 1
)
dfs(s);
while(!s.empty())
return0;
}
P2731 騎馬修柵欄 (尤拉路徑)
題目描述 john是乙個與其他農民一樣懶的人。他討厭騎馬,因此從來不兩次經過乙個柵欄。你必須編乙個程式,讀入柵欄網路的描述,並計算出一條修柵欄的路徑,使每個柵欄都恰好被經過一次。john能從任何乙個頂點 即兩個柵欄的交點 開始騎馬,在任意乙個頂點結束。每乙個柵欄連線兩個頂點,頂點用1到500標號 雖...
洛谷P2731騎馬修柵欄
farmer john每年有很多柵欄要修理。他總是騎著馬穿過每乙個柵欄並修復它破損的地方。john是乙個與其他農民一樣懶的人。他討厭騎馬,因此從來不兩次經過乙個柵欄。你必須編乙個程式,讀入柵欄網路的描述,並計算出一條修柵欄的路徑,使每個柵欄都恰好被經過一次。john能從任何乙個頂點 即兩個柵欄的交點...
洛谷 P2731 騎馬修柵欄 尤拉路與尤拉迴路
給出m mm條邊,求出一條尤拉路,起點任意,終點任意,每條邊只經過一次。要求給出的尤拉路字典序最小。1 m 1024,1 n 500 1 leq m leq 1024,1 leq n leq 500 1 m 1 024,1 n 500 先總結一下有向圖 無向圖求尤拉路與尤拉迴路的性質。無向圖 有且僅...