/*
此題用了我一天,說明我的基礎知府還是不夠紮實;
考點:尤拉迴路和尤拉通路, 加變相dnf;
前提:要是連通圖;(用dnf,(每一步兩頭搜))
尤拉迴路,要求圖的每乙個點的出度和入度一樣,
尤拉通路,要求圖的起點的出度比入度大1,終點的出度比入度少於1;
*/#include #include #include using namespace std;
const int max = 26;
int map[max][max];
int visit_in[max];
int visit_out[max];
int flag[max];
int m;
char str[1005];
void down(int n);
//圖的遍歷,向上搜
void up(int sa)
} }//圖的遍歷,向下搜
void down(int sb) }}
int main()
//用第乙個點開始遍歷;
--map[sa][sb];
up(sa);
down(sb);
//判斷有點或邊沒有遍歷完的
int res = 0;
for(int i=0; i<26; ++i)
} for(int i=0; (i<26) && (res==0); ++i)
}}
if(res == 1)
//判斷點的出度和入度是否符合要求;
res = 0;
a = b = 0;
for(int i=0; i<26; ++i)
} if(res == 0 || (res == 2 && a == 1 && b==1 ))else
} return 0;
}
poj1386 尤拉迴路)
題目鏈結 解題思路 把每個單詞當成是一條有向邊。把首字母和尾字母當成是節點,如果該字母是乙個單詞的首字母,該字母的入度就加一,如果是尾字母,該字母的出度就加一。然後判斷是否形成尤拉迴路即可。尤拉路徑判斷條件 首先該圖必須是連通圖。對於無向圖,所有頂點的讀都為偶數,對於有向圖,要麼所有頂點的入度等於出...
POJ 1386 判斷尤拉迴路
題意 要開啟一扇門,n個單詞是密碼,n個單詞中,如果乙個單詞的首字母和前乙個單詞的尾字母相同,並且每個單詞都能這麼連起來且只用一次,則門可以開啟,否則不能開啟,現給出單詞,判斷門是否可以開。有向圖尤拉通路充要條件 d為有向圖,d的基圖連通,並且所有頂點的出度與入度都相等 或者除兩個頂點外,其餘頂點的...
尤拉迴路 尤拉通路判斷
尤拉迴路 圖g,若存在一條路,經過g中每條邊有且僅有一次,稱這條路為尤拉路,如果存在一條迴路經過g每條邊有且僅有一次,稱這條迴路為尤拉迴路。具有尤拉迴路的圖成為尤拉圖。判斷尤拉通路是否存在的方法 有向圖 圖連通,有乙個頂點出度大入度1,有乙個頂點入度大出度1,其餘都是出度 入度。無向圖 圖連通,只有...