EOJ 3369 三千公尺健身步道

2022-05-26 03:36:11 字數 1373 閱讀 3969

單點時限: 2.0 sec

記憶體限制: 256 mb

華師大是乙個巨大的學校,眾所周知,華師大的地圖是一棵樹,有 n

座教學樓,這些教學樓之間由 n−1

條道路相連,每條道路的長度都是一千公尺。

現在華師大投資建設乙個「三千公尺健身步道」。為了讓同學們不帶喘氣的跑(走)完這個健身步道,這個健身步道必須有乙個起點,乙個終點,中間是一段連續的三千公尺的跑道。華師大決定利用現有的 n−1

條道路建設這乙個健身步道。問總共有多少種方案?

注意,起點和終點交換算同一種方案。

第一行為 n

(2≤n≤1000)

,表示教學樓數量,教學樓編號從 1

到 n。接下來 n−1

行,每行為 ui,vi

(1≤ui,vi≤n,ui≠vi)

,表示 ui,vi

之間有道路相連。

輸出方案數。如果不存在,輸出 0

。input

6

1 22 3

3 44 5

4 6

output

3

題意:已知有n個節點,n-1個節點之間有連線,連續的三個連線為乙個方案,求有多少種方案。

思路:

深度搜尋,以每乙個節點為起點,以其所連線的節點作為下一步的起點,當深度到3時結束。以vector陣列node[i]表示節點i所連線的節點編號。

注意:①i與j之間有連線,則需要同時向node[i]中加入j,向node[j]中加入i,其目的是防止如三元環的出現(否則將被誤認為僅有兩條路徑而不作為答案)

②應將嘗試的節點設定為used,嘗試後取消,為防止如僅有兩個節點時,兩個節點之間反覆計算。

1 #include2 #include3 #include4

using

namespace

std;

5 vectornode[1010];6

int used[1010];7

intans,n;

8void dfs(int index,int

a) 13 vector::iterator it;

14if (!node[a].empty()) 21}

22}23}

24int

main()

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

38 printf("

%d", ans/2

);39

return0;

40 }

EOJ 莫干山奇遇

出題人當然是希望出的題目有關oxx,於是想方設法給題目配上一些有關oxx的背景故事,使得它看起來不那麼無趣。但有的時候卻無法引入合適的小姐姐,使得oxx顯得非常可憐。所以出題人刪除了故事,只留下乙個枯燥乏味的數學問題。故事已刪除 給乙個長度為n的序列a1,a2,an,求乙個長度為m的序列b1,b2,...

splay 模板 洛谷3369

題目描述 插入 xx 數 刪除 xx 數 若有多個相同的數,因只刪除乙個 查詢 xx 數的排名 排名定義為比當前數小的數的個數 1 1 若有多個相同的數,因輸出最小的排名 查詢排名為 xx 的數 求 xx 的前驅 前驅定義為小於 xx 且最大的數 求 xx 的後繼 後繼定義為大於 xx 且最小的數 ...

Luogu 3369 普通平衡樹

插入x數 刪除x數 若有多個相同的數,因只刪除乙個 查詢x數的排名 排名定義為比當前數小的數的個數 1。若有多個相同的數,因輸出最小的排名 查詢排名為x的數 求x的前驅 前驅定義為小於x,且最大的數 求x的後繼 後繼定義為大於x,且最小的數 輸入格式 第一行為n,表示操作的個數,下面n行每行有兩個數...