UOJ 493 螞蟻之旅

2022-05-23 10:03:07 字數 1019 閱讀 1264

【題目描述】:

給你無向圖的n個點和m條邊,保證這m條邊都不同且不會存在同一點的自環邊,現在問你至少要幾筆才能所有邊都畫一遍。(一筆畫的時候筆不離開紙)

【輸入描述】:

多組資料,每組資料用空行隔開。

對於每組資料,第一行兩個整數n,m表示點數和邊數。接下去m行每行兩個整數a,b ,表示a,b之間有一條邊。

【輸出描述】:

對於每組資料,輸出答案。

【樣例輸入】:

3 31 2

2 31 3

4 21 2

3 4【樣例輸出】:12

【時間限制、資料範圍及描述】:

1<=n<=10^5;0<=m<=2×10^5;1<=a,b<=n

當這個無向連通圖只有乙個點時,這是乙個孤立點,不做操作

當這個無向連通圖是一條尤拉迴路或尤拉路徑時,只需要一筆畫即可,sum++;

當這個無向連通圖有大於2個奇度點,需要用奇度點的個數的二分之一筆畫完,為什麼?因為一筆可以消掉兩個奇度點。由於對稱性的緣故,一條邊的左右兩端點度數分別加一,倘若原來兩點都是奇度點,則兩端點都會變成偶度點,反之亦然,倘若兩端點度數的奇偶性不同,一者為奇一者為偶,與這兩點對應的點一定有奇數個奇度點,所以乙個無向連通圖中不可能存在奇數個奇度點,所以只需/2即可.

code:

#include#include#include#include#includeusing namespace std;

const int n=200005;

struct nodee[n*2];

int head[n],re[n];

int x,tot;

bool vis[n];

void add_edge(int u,int v)

void dfs(int s) }}

int main()

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

} printf("%d\n",ans);

} return 0;

}

藍橋杯之螞蟻感冒問題

長100厘公尺的細長直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。每只螞蟻都只能沿著桿子向前爬,速度是1厘公尺 秒。當兩隻螞蟻碰面時,它們會同時掉頭往相反的方向爬行。這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。請你計算,當所有螞蟻都爬離5桿子時,有多少只螞蟻患上...

藍橋杯之蘭頓螞蟻

博主最近在刷藍橋杯,以後爭取每做一題都寫一篇解題報告。進入正題,首先看題目 問題描述 蘭頓螞蟻,是於1986年,由克里斯 蘭頓提出來的,屬於細胞自動機的一種。平面上的正方形格仔被填上黑色或白色。在其中一格正方形內有乙隻 螞蟻 螞蟻的頭部朝向為 上下左右其中一方。螞蟻的移動規則十分簡單 若螞蟻在黑格,...

有趣的c語言例題之螞蟻感冒

歷屆試題 螞蟻感冒 時間限制 1.0s 記憶體限制 256.0mb 問題描述 長100厘公尺的細長直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。每只螞蟻都只能沿著桿子向前爬,速度是1厘公尺 秒。當兩隻螞蟻碰面時,它們會同時掉頭往相反的方向爬行。這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,...