i : traffic tree

27
Public_sate

Upload: takumi-yamashita

Post on 05-Apr-2017

27 views

Category:

Education


0 download

TRANSCRIPT

Page 1: I : Traffic Tree

Public_sate

Page 2: I : Traffic Tree

• N頂点からなる木があります。

• 各頂点について、

その頂点から初めて全ての頂点を訪れる最短のステップ数を出力して下さい。

• 辺を1つたどる行為を1ステップとする。

Page 3: I : Traffic Tree

• スタート1のとき

1

2 3

5 4

6

Page 4: I : Traffic Tree

• スタート1のとき 1

1

2 3

5 4

6

Page 5: I : Traffic Tree

• スタート1のとき 2

1

2 3

5 4

6

Page 6: I : Traffic Tree

• スタート1のとき 3

1

2 3

5 4

6

Page 7: I : Traffic Tree

• スタート1のとき 4

1

2 3

5 4

6

Page 8: I : Traffic Tree

• スタート1のとき 5

1

2 3

5 4

6

Page 9: I : Traffic Tree

• スタート1のとき 6

1

2 3

5 4

6

Page 10: I : Traffic Tree

• スタート1のとき 7

1

2 3

5 4

6

Page 11: I : Traffic Tree

• スタート1のとき7ステップ

1

2 3

5 4

6

Page 12: I : Traffic Tree

• スタート2のとき 6

1

2 3

5 4

6

Page 13: I : Traffic Tree

• スタート3のとき 8

1

2 3

5 4

6

Page 14: I : Traffic Tree

• 根付き木を 考えてみます。

1

2 3

5 4

6

Page 15: I : Traffic Tree

一番深いやつを最後に 見たほうが良い

1

2 3

5

4

6

Page 16: I : Traffic Tree

赤いやつは一度しか通らない

それ以外は二度通る (戻ってくるため)

1

2 3

5

4

6

Page 17: I : Traffic Tree

• 頂点aから全ての頂点をたどる 最短ステップ数

= 辺の数*2 – 頂点aを根とした根付き木の深さ

Page 18: I : Traffic Tree

• 各頂点を根とする根付き木の 深さが分ければ良い。

Page 19: I : Traffic Tree

• 木の直径の両端を求めます。

Page 20: I : Traffic Tree

• ある頂点を見た時、この両端の どちらかが最も遠い頂点になる。

Page 21: I : Traffic Tree

木の直径上に行ってから 両端のどちらかに行く

Page 22: I : Traffic Tree

• それぞれから距離を求める

3,3

3,3

2,2

4,2

4,2

4,0

1,3

3,1

0,4

Page 23: I : Traffic Tree

• max をとれば各頂点を根とする根付き木の 深さが分かる。 => 解ける

3

3

2

4

4

4

3

3

4

Page 24: I : Traffic Tree

あとは各頂点について

= 辺の数*2 – 頂点aを根とした根付き木の深さ

を求める。

O( N )

Page 25: I : Traffic Tree

• 各頂点について毎回 DFSして木の深さを調べる。 O( N^2 )

• 木dp[頂点][一個前] これはウニで落ちる。O(N^2)

Page 26: I : Traffic Tree

• online – First Submit semiexp 16min

– First Accept semiexp 16min

• Onsite – First Submit soujirou ?min

– First Accept return_9 167m

• Submissions – Success Rate 19/36 52.78%

– Success User Rate 19/19 100%

Page 27: I : Traffic Tree

• sate – 41行

• kzyKT

– 51行

• Arrows

– 97行

• uku

– 45行

• Mot

– 91行

• Beet

– 37行