1375 騎馬修柵欄 fence

2021-08-22 08:50:43 字數 1151 閱讀 9248

農民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;

int n;

int maxn;

int beginn=10000;

int path[1000];

int d[1000];

int start=0;

int cnt=0;

void dfs(int i)

}path[++cnt]=i;

}int main()

for(int i=beginn;i<=maxn;i++)

}if(start==0) start=beginn;//如果沒有找到奇點那麼就從最小的點開始遍歷

dfs(start);

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

return 0;

}

1375 騎馬修柵欄 fence

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

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

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

騎馬修柵欄

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