NYOJ 42 一筆畫問題 (尤拉迴路 並查集)

2021-08-09 15:51:18 字數 1145 閱讀 7650

一筆畫問題

時間限制:3000 ms | 記憶體限制:65535 kb

難度:4

描述 zyc從小就比較喜歡玩一些小遊戲,其中就包括畫一筆畫,他想請你幫他寫乙個程式,判斷乙個圖是否能夠用一筆畫下來。

規定,所有的邊都只能畫一次,不能重複畫。

輸入 第一行只有乙個正整數n(n<=10)表示測試資料的組數。

每組測試資料的第一行有兩個正整數p,q(p<=1000,q<=2000),分別表示這個畫中有多少個頂點和多少條連線。(點的編號從1到p)

隨後的q行,每行有兩個正整數a,b(0 < a , b < p),表示編號為a和b的兩點之間有連線。

輸出 如果存在符合條件的連線,則輸出」yes」,

如果不存在符合條件的連線,輸出」no」。

樣例輸入

2 4 3

1 2

1 3

1 4

4 5

1 2

2 3

1 3

1 4

3 4

樣例輸出

no yes

[分析]

離散數學教材中的定理:無向圖g具有一條尤拉路,當且僅當g是連通的,且有零個或兩個奇數度節點。

(無向圖中『度』就是有幾條線與其連線)

所以就是儲存所有節點的度,然後判斷奇數偶數。

並查集判斷連通性;

一發ac。

[**]

#include

#include

#define max 1005

struct unionfind

void make_set()//初始化

}int find_set(int x)//查

void union_set(int a, int b)//合併

}};int vis[1005];

int main()

int j=0;

for (int i = 1;i <= p;i++)

if ((j == 0 || j == 2) && uf.num[uf.find_set(1)] == p)printf("yes\n");

else

printf("no\n");

}}

nyoj42一筆畫問題(尤拉迴路)

題目解析 此題是尤拉迴路,尤拉迴路滿足的條件 無論是有向圖還是無向圖前提條件都是圖要連通,如果是無向圖需要有0個奇度頂點或者2個奇度頂點,如果是有向圖,在前兩個條件的基礎之上還要附加上乙個條件 乙個奇度頂點入度比出度大1,另乙個奇度頂點出度比入度大1。所以要解決這樣的問題,首先要判斷圖的連通性,在圖...

nyoj42 一筆畫問題 尤拉迴路

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 zyc從小就比較喜歡玩一些小遊戲,其中就包括畫一筆畫,他想請你幫他寫乙個程式,判斷乙個圖是否能夠用一筆畫下來。規定,所有的邊都只能畫一次,不能重複畫。輸入 第一行只有乙個正整數n n 10 表示測試資料的組數。每組測試資料的第一...

nyoj42一筆畫問題 尤拉迴路

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 zyc從小就比較喜歡玩一些小遊戲,其中就包括畫一筆畫,他想請你幫他寫乙個程式,判斷乙個圖是否能夠用一筆畫下來。規定,所有的邊都只能畫一次,不能重複畫。輸入第一行只有乙個正整數n n 10 表示測試資料的組數。每組測試資料的第一行...