水題,不過這裡整理一下尤拉路的基本概念和判斷方法。
尤拉路:g為連通無向圖,經過g每條邊一次並且僅有一次的路徑成為尤拉路
尤拉迴路:尤拉路的起點和終點為同乙個點的路
具有尤拉迴路的無向圖g稱為尤拉圖
判定:無向圖的判定:頂點的度全為偶數或者有且只有兩個為奇數的圖有尤拉路。如果頂點全為偶數,則可以以任意點為起點並且最終會回到起點構成尤拉迴路。如果頂點有兩個點為奇數,則這兩個點必定為起點和終點。
有向圖的判定:頂點的出度和入度之差全部為0或者只有乙個點為1,乙個點為-1的圖有尤拉路。如果全部為0則可以取任意點為起點並且最終會回到起點構成尤拉迴路,否則則差為1的點為起點,-1的為終點。
#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;typedef long long ll;
const int maxn = 105;
int deg[maxn],n,m;
string buf;
int main()
}cin >> buf;
for(int i = 0;i <= m;i++) if(deg[i] & 1) cntodd++;
if(cntodd == 0 && n == 0) cout << "yes " << cntdoor;
else if(cntodd == 2 && n != 0 && deg[0] % 2 && deg[n] % 2)
cout << "yes " << cntdoor;
else cout << "no";
cout << endl;
}return 0;
}
POJ 1300 Door Man 尤拉迴路判定
題意 給定乙個無向圖的關係,判定是否存在一條從m點出發回到0點並且走遍所有邊的通路,也即尤拉通路。解法 該題如果當出發點就為0點話就等效於是否存在尤拉迴路了。尤拉通路的判定條件為 連通的無向圖中,度為奇數節點的個數為0個或者是2個。由於該題限定了起點和端點,因此度為奇數的點只能夠由兩個,且為m和0。...
POJ 1300 判斷尤拉迴路
題意 能否找到一條路徑經過所有開著門的房間,並使得 1 通過門後立即把門關上,2 關上的門不在開啟,3 最後回到你自己的房間 房間0 並且所有的門都已經關閉。題目已知這是連通圖。分析 以房間為頂點,連線房間之間的門為邊構造圖。根據題意,輸入檔案的每個測試資料所構造的圖都是連通的。本題實際上是判斷乙個...
尤拉迴路的判定 poj 1300
這個題卡了一上午卡到心態 卡到欲仙欲死。各種bug蜜汁出現。一邊一遍的除錯,忽然發現思考成熟是多麼的重要!最後是乙個短路效應的問題,懷疑人生!這個題就是統計出度和入度,就是建圖有點麻煩,其實也不算太麻煩了。對於無向圖而言就是 判斷是否滿足沒有奇度頂點,或者奇度定點只有兩個,並且這兩個奇度頂點其中乙個...