poj1386 尤拉迴路)

2021-07-01 18:57:32 字數 841 閱讀 4174

題目鏈結

解題思路:把每個單詞當成是一條有向邊。把首字母和尾字母當成是節點,如果該字母是乙個單詞的首字母,該字母的入度就加一,如果是尾字母,該字母的出度就加一。然後判斷是否形成尤拉迴路即可。

尤拉路徑判斷條件:首先該圖必須是連通圖。對於無向圖,所有頂點的讀都為偶數,對於有向圖,要麼所有頂點的入度等於出度,要麼只有兩個頂點入度和出度不同,乙個入度比出度大一,乙個出度比入度大一。

連通圖的判斷方法:對每條邊的兩個頂點進行合併,如果最終能合併到乙個集合,說明該圖為連通圖。

**:

#include #include #include #include #include using namespace std;

int ru[27], ch[26], num, root[26];

char s1[1002];

int findroot(int a)

void merge(int a, int b)

bool check() //返回是否是連通圖

}return true;

}int main()

for(j = 0; j < num; j++)

ok = true;

for(j = 0; j < 26; j++)

}if(check() && ok &&

((numue == 0) || (numue == 2 && sum == 0)) //尤拉迴路的判斷條件

)else

printf("the door cannot be opened.\n");

}return 0;

}

POJ 1386 判斷尤拉迴路

題意 要開啟一扇門,n個單詞是密碼,n個單詞中,如果乙個單詞的首字母和前乙個單詞的尾字母相同,並且每個單詞都能這麼連起來且只用一次,則門可以開啟,否則不能開啟,現給出單詞,判斷門是否可以開。有向圖尤拉通路充要條件 d為有向圖,d的基圖連通,並且所有頂點的出度與入度都相等 或者除兩個頂點外,其餘頂點的...

POJ 1386 尤拉迴路,尤拉通路,變相DNF

此題用了我一天,說明我的基礎知府還是不夠紮實 考點 尤拉迴路和尤拉通路,加變相dnf 前提 要是連通圖 用dnf,每一步兩頭搜 尤拉迴路,要求圖的每乙個點的出度和入度一樣,尤拉通路,要求圖的起點的出度比入度大1,終點的出度比入度少於1 include include include using na...

poj1386 poj2513 尤拉迴路

poj1386和poj2513是同乙個型別 poj1836 視為求有向的尤拉通路 並非尤拉迴路 判別方法 所有的點入度 出度或者 只有有兩個入度減出度為1和 1的兩個節點 終點,開點 其他點入度 出度則存在尤拉通路 由於這題需要用完全部的單詞,所以要判斷圖是否全部連通,即用並查集即可判斷有多少個集合...