時間限制: 1 sec 記憶體限制: 128 mb
農民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 22 3
3 44 2
4 52 5
5 65 7
4 6
123徐不可說:簡化題意就是乙個一筆畫問題,即尤拉迴路,注意要注意此題的路徑為無向圖。4254
657
#include#include#includeusing namespace std;
const int mn = 512;
struct edge k;
int m, n;
int t[mn][mn], way[mn], d[mn], cnt = 0;
void find(int k)
}way[++cnt] = k;
}int main()
int k1 = 600, k2 = 600;
for (int i = 1; i <= n; i++)
if (k1 != 600)find(k1);
else find(k2);
for (int i = cnt; i >= 1; i--)
return 0;
}
下面是與之相似的一道題——鏟雪車。同樣可以用尤拉迴路解決。
隨著白天越來越短夜晚越來越長,我們不得不考慮剷雪問題了。整個城市所有的道路都是雙車道,因為城市預算的削減,整個城市只有1輛鏟雪車。鏟雪車只能把它開過的地方(車道)的雪鏟乾淨,無論哪兒有雪,鏟雪車都得從停放的地方出發,遊歷整個城市的街道。現在的問題是:最少要花多少時間去鏟掉所有道路上的雪呢?
輸入有多組資料,每組資料的第1行表示鏟雪車的停放座標(x,y),x,y為整數,單位為公尺。第2行為乙個數n(n<=4000)表示下面有n行,每行給出了一條街道的起點座標和終點座標,所有街道都是筆直的,且都是雙向乙個車道。鏟雪車可以在任意交叉口或任何街道的末尾任意轉向,包括轉u型彎。鏟雪車鏟雪時前進速度為20千公尺/時,不剷雪時前進速度為50千公尺/時。保證:鏟雪車從起點一定可以到達任何街道。
對於每組資料輸出鏟掉所有街道上的雪並且返回出發點的最短時間,精確到分鐘。
0 030 0 10000 10000
5000 -10000 5000 10000
5000 10000 10000 10000
3:55
#include#include#includeusing namespace std;
double fun(int a,int b,int c,int d)
int main()
int t = sum - 1;
double t = sum - t;
int te =floor(t * 60 + 0.5);
if(te >= 60)
cout << t << ":";
if(te < 10) cout << "0";
cout << te << endl;
} return 0;
}
1375 騎馬修柵欄 fence
農民john每年有很多柵欄要修理。他總是騎著馬穿過每乙個柵欄並修復它破損的地方。john是乙個與其他農民一樣懶的人。他討厭騎馬,因此從來不兩次經過乙個乙個柵欄。你必須編乙個程式,讀入柵欄網路的描述,並計算出一條修柵欄的路徑,使每個柵欄都恰好被經過一次。john能從任何乙個頂點 即兩個柵欄的交點 開始...
1375 騎馬修柵欄 fence
農民john每年有很多柵欄要修理。他總是騎著馬穿過每乙個柵欄並修復它破損的地方。john是乙個與其他農民一樣懶的人。他討厭騎馬,因此從來不兩次經過乙個乙個柵欄。你必須編乙個程式,讀入柵欄網路的描述,並計算出一條修柵欄的路徑,使每個柵欄都恰好被經過一次。john能從任何乙個頂點 即兩個柵欄的交點 開始...
鏟雪車 騎馬修柵欄 (尤拉路徑和尤拉迴路)
今天上午的訓練賽涉及到的,順便補一下叭。相信大家都聽說過著名的七橋問題,而尤拉迴路就是偉大的數學家尤拉為了解決七橋問題提出的。首先介紹一下基本概念 在乙個圖中,經過每條邊一次並且只經過一次的迴路被稱為尤拉迴路,路徑被稱為尤拉路徑。根據名字就可以知道,迴路是起點終點相同的,而路徑是起點終點不同的。其實...