hiho 1041 國慶出遊

2021-07-31 20:19:28 字數 1686 閱讀 4893

時間限制:1000ms

單點時限:1000ms

記憶體限制:256mb

描述 小hi和小ho準備國慶期間去a國旅遊。a國的城際交通比較有特色:它共有n座城市(編號1-n);城市之間恰好有n-1條公路相連,形成乙個樹形公路網。小hi計畫從a國首都(1號城市)出發,自駕遍歷所有城市,並且經過每一條公路恰好兩次——來回各一次——這樣公路兩旁的景色都不會錯過。

令小hi苦惱的是他的小夥伴小ho希望能以某種特定的順序遊歷其中m個城市。例如按3-2-5的順序遊歷這3座城市。(具體來講是要求:第一次到達3號城市比第一次到達2號城市早,並且第一次到達2號城市比第一次到達5號城市早)。

小hi想知道是否有一種自駕順序滿足小ho的要求。

輸入 輸入第一行是乙個整數t(1<=t<=20),代表測試資料的數量。

每組資料第一行是乙個整數n(1 <= n <= 100),代表城市數目。

之後n-1行每行兩個整數a和b (1 <= a, b <= n),表示ab之間有公路相連。

之後一行包含乙個整數m (1 <= m <= n)

最後一行包含m個整數,表示小ho希望的遊歷順序。

輸出 yes或者no,表示是否有一種自駕順序滿足小ho的要求。

樣例輸入

2 7

1 2

1 3

2 4

2 5

3 6

3 7

3 3 7 2

7 1 2

1 3

2 4

2 5

3 6

3 7

3 3 2 7

樣例輸出

yes

no

#include 

using

namespace

std;

int tag[105][105];

int a[100];

int n,m,l;

stack

d;void bfs(int t)

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

}}int main()

cin>>m;

for(int i=0;icin>>a[i];

l=0;

bfs(1);

while(d.size())

if(l==m) cout

<<"yes"

cout

<<"no"

《修改之後ac的 。

加乙個出棧的,這個結點走完之後 ,結點 下面的點是不必要存在棧裡面的

#include

using

namespace

std;

int tag[105][105];

int a[105];

int n,m,l;

stack

d;void bfs(int t)

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

} //coutll)

}int main()

cin>>m;

for(int i=0;icin>>a[i];

l=0;

bfs(1);

while(d.size())

if(l==m) cout

<<"yes"

cout

<<"no"

<}

}

hiho1041 國慶出遊 dfs bitset

題目大意 給定一棵 n 個節點的有根樹,1 號節點為根節點,現遍歷整棵樹,要求每條邊僅被經過兩次,問是否存在一種特定的遍歷方式使得 dfs 序中節點的相對前後關係符合給定的順序。題解 首先,由於要求每條邊僅能經過兩次,可知若正在遍歷當前節點 u,則以 u 為根節點的子樹中的所有節點都必須遍歷,因此遍...

1041 國慶出遊

時間限制 1000ms 單點時限 1000ms 記憶體限制 256mb 小hi和小ho準備國慶期間去a國旅遊。a國的城際交通比較有特色 它共有n座城市 編號1 n 城市之間恰好有n 1條公路相連,形成乙個樹形公路網。小hi計畫從a國首都 1號城市 出發,自駕遍歷所有城市,並且經過每一條公路恰好兩次 ...

hihocoder 1041 國慶出遊

傳送門 描述 小hi和小ho準備國慶期間去a國旅遊。a國的城際交通比較有特色 它共有n座城市 編號1 n 城市之間恰好有n 1條公路相連,形成乙個樹形公路網。小hi計畫從a國首都 1號城市 出發,自駕遍歷所有城市,並且經過每一條公路恰好兩次 來回各一次 這樣公路兩旁的景色都不會錯過。令小hi苦惱的是...