P1636 Einstein學畫畫 尤拉迴路

2022-05-01 15:42:11 字數 1097 閱讀 9311

einstein學起了畫畫,

此人比較懶~~,他希望用最少的筆畫畫出一張畫。。。

給定乙個無向圖,包含n 個頂點(編號1~n),m 條邊,求最少用多少筆可以畫出圖中所有的邊

輸入格式:

第一行2個數n,m

以下m行 每行2個數a,b(a<>b) 表示a,b兩點之間有一條邊相連

一條邊不會被描述多次

輸出格式:

乙個數 即問題的答案

輸入樣例#1: 複製

5 5

2 32 4

2 53 4

4 5

輸出樣例#1: 複製

1

這題很好的概括了尤拉迴路的性質 以前只知道 奇數度為0或2可以一筆畫

這道題就是乙個簡單的尤拉迴路的模板,統計每個點的度數,如果每個點的度數都為偶數,那麼就可以一筆畫(因為每個點都有進有出),否則統計度數為奇數的點的個數(記為num)答案就是num/2(每次都把度數為奇數的點分別作為起點和終點)。

#includeusing

namespace

std;

int n,m,dg[1010],a,b,num=0;//

dg記錄每個點的度數

bool map[1010][1010

];//

用鄰接矩陣儲存圖

long

long read()//

快讀

while(ch>='

0'&&ch<='9'

)

if(last=='

-')ans=-ans;

return

ans;

}void add(int x,int y)//

加入int

main()

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

if(dg[i]&1==1)num++;

if(num==0||num==2)cout<

;

else cout<2

;

return0;

}

view code