題意:能否找到一條路徑經過所有開著門的房間,並使得:1:通過門後立即把門關上,2:關上的門不在開啟,3:最後回到你自己的房間(房間0),並且所有的門都已經關閉。
題目已知這是連通圖。
分析:以房間為頂點,連線房間之間的門為邊構造圖。根據題意,輸入檔案的每個測試資料所構造的圖都是連通的。本題實際上是判斷乙個圖中是否存在尤拉迴路或者尤拉通路。
乙個無向圖存在尤拉迴路,當且僅當該圖所有頂點度數都是偶數且該圖是連通圖。
乙個有向圖存在尤拉迴路,所有頂點的入度等於出度且該圖是連通圖
這題是無向圖。
這題的關鍵其實是在讀入輸入。。。1:因為有空行,而且這些空行都是有用的資訊,所以不能簡單的用cin||scanf輸入每個房間通往其他房間的房間號。
注意下面**。
view code
//i'm the topcoder//c
#include #include
#include
#include
#include
#include
//c++
#include #include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
//*************************output*************************
#ifdef win32
#define int64 "%i64d"
#define uint64 "%i64u"
#else
#define int64 "%lld"
#define uint64 "%llu"
#endif
//**************************constant***********************
#define inf 0x3f3f3f3f
#define eps 1e-8
#define pi acos(-1.)
#define pi2 asin (1.);typedef
long
long
ll;//
typedef __int64 ll;
//codeforces
typedef unsigned int
ui;typedef unsigned
long
long
ui64;
#define mp make_pairtypedef vector
vi;typedef pair
pii;
#define pb push_back
#define mp make_pair
//***************************sentence************************
#define cl(a,b) memset (a, b, sizeof (a))
#define sqr(a,b) sqrt ((double)(a)*(a) + (double)(b)*(b))
#define sqr3(a,b,c) sqrt((double)(a)*(a) + (double)(b)*(b) + (double)(c)*(c))
//****************************function************************
template double dis(t va, t vb)
template
inline t integer_len(t v)
template
inline t square(t va, t vb)
//aply for the memory of the stack
//#pragma comment (linker, "/stack:1024000000,1024000000")
//end
const
int maxn = 1010
;char
s[maxn];
char
s2[maxn];
intn,m;
int door[maxn];//
計算每個房間的門數
int doors;//
門的總數
inteven,odd;
intmain()
doors=0; even=0; odd=0
; getchar();
scanf(
"%d%d
",&m,&n);
getchar();
//不可少;
memset(door,0,sizeof
(door));
for(int i=0;i)}}
gets(s);
for(int i=0;i)
if(odd==0&&m==0) printf("
yes %d\n
",doors);
else
if(odd==2&&door[m]%2==1&&door[0]%2==1&&m!=0
)
else printf("
no\n");
}return0;
}
尤拉迴路的判定 poj 1300
這個題卡了一上午卡到心態 卡到欲仙欲死。各種bug蜜汁出現。一邊一遍的除錯,忽然發現思考成熟是多麼的重要!最後是乙個短路效應的問題,懷疑人生!這個題就是統計出度和入度,就是建圖有點麻煩,其實也不算太麻煩了。對於無向圖而言就是 判斷是否滿足沒有奇度頂點,或者奇度定點只有兩個,並且這兩個奇度頂點其中乙個...
poj 1300 尤拉迴路 通路 解題報告
最近學了一些dp的皮毛之後,現在開始圖論知識的學習,說實話,初步不知道怎麼弄這個,然後無意間在網上下了一本關於圖論的演算法設計程式的教程,然後感覺還不錯,結果後面才發現原來多年前,我的師兄就給了我這樣一本好的資料。感覺有點小悲催啊。有點對不起師兄的感覺,然後今天終於寫了乙個小知識點,尤拉迴路的一題,...
POJ 1300 判斷是否存在尤拉迴路(包含定理)
判斷存在尤拉迴路的定理 尤拉通路和尤拉迴路的判定是很簡單的,請看下面的定理及推論。定理5.1 無向圖g 存在尤拉通路的充要條件是 g 為連通圖,並且g 僅有兩個奇度結點 度數為奇數的頂點 或者無奇度結點。推論5.1 1 當g 是僅有兩個奇度結點的連通圖時,g 的尤拉通路必以此兩個結點為端點。2 當g...