SlideShare a Scribd company logo
1 of 20
D.情報伝播
問題概要

 二次元座標上に散らばるn人の仲間に情報を伝えたい
 誰か一人に直接情報を与えると、情報を受け取った人は
  自分を中心とする同心円内の人すべてに情報を伝える
  (半径は任意に決められる)
 伝えられた人はまた、連鎖的に情報を伝えていく
 ただし、n人の他にm人のスパイがいる。スパイには絶
  対に情報を伝えたくないので、スパイが同心円内に入っ
  てはいけない
 スパイに情報を伝えないようにしつつ、全ての仲間に情
  報を伝えるとき、最小何人に直接情報を伝えればよいか
入力形式


制約・出力形式


例1

   Sample Input            :仲間
   3
   11
   12
   21
   0

 Sample Output
1

 例えば1番目の人に伝えれば3人全員に伝えられる
例2

   Sample Input
                          :仲間
   2
                          :スパイ
   11
   12
   1
   21

 Sample Output
1


 1番目の人から2番目の人に伝えようとすると、絶対にスパイに
  も伝わってしまうので無理
 2番目の人に伝えれば2人に伝えられる
例3

   Sample Input
                        :仲間
   5
   1 1                 :スパイ
   1 2
   2 3
   3 3
   5 3
   2
   2 1
   4 4

 Sample Output
2


 3番目の人から始めると2,4番目の人に伝えられ、2番目の人から更
  に1番目の人へと伝えられる。その後、別に5番の人に伝える
考察


部分点想定解法


深さ優先探索(DFS)

 プロコンガチ勢じゃなくても耳タコ感ありますが……

 グラフを探索するときの辿り方
 新しい探索できるところを見つけたらそちらを優先して探索する
 新しく探索するところがなくなったら一歩戻る
                                    1
 図の数字:探索順                              6
                            2
                                3           8
                                        7
                        4       5           9
 実装が再帰で楽に書けるのでDFSとしましたが、
 別にBFSとか他の全探索アルゴリズムでもいいです
DFSと被覆

 頂点Xを始点とするDFSで辿り着けたところ=被覆

 2を始点とすると2,4,7,9に行ける
  2は2,4,7,9を被覆している


 10を始点とすると3,8,10に行ける
                                 1
  10は3,8,10を被覆している
                                         10
                             2
                                              8
                         4       9   3

                                              5
                             7       6
集合被覆の例

                         始点   被覆          始点   被覆
                         1    1,2,4,7,9   1    1,2,4,7,9
                         2    2,4,7,9     2    2,4,7,9
        1                3    3           3    3
                10
                         4    2,4,7,9     4    2,4,7,9
    2
                         5    3,5         5    3,5
                     8
4           3            6    3,5,6       6    3,5,6
        9
                         7    7           7    7
                     5   8    3,8,10      8    3,8,10
    7       6            9    2,4,7,9     9    2,4,7,9
                         10   3,8,10      10   3,8,10

                                          1,6,10に伝えれば
                                          最小被覆可能
100点解法への問題点


想定解法


KD木

 k次元空間を分割し、二分木構造で格納したもの
 空間の分割は点集合を持ちながら再帰的に行う
  木の深さmでの空間の分割は、(m mod k)+1次元目の値について、点集
   合の中央値で分割する
  実際に中央値を持つ点をその時点でのノードにする
  値が中央値未満のものを左の部分木、以上のものを右の部分木として
   集合を二分割して下っていく
                                            6
      1       3
 8                                  2               5
      2
                  5
                                4       1       7       3
          6
  4                   7
                                    8
KD木のクエリ


強連結成分分解

 グラフSにおいて、Sの任意の頂点からSの他の任意の頂点へ到達
  可能なとき、Sは強連結であるという
 グラフGの部分グラフSが極大な強連結であるとき、Sを強連結成
  分(SCC: Strongly Connected Component) という

 強連結成分分解とは、強連結成分を1つの頂点に潰してしまうこ
  とをいう
  強連結成分分解後のグラフは必ずDAG(閉路がない有向グラフ)になる


 強連結成分分解は、DFSを2回(以上)行うことで実現できる
  1回目のDFSで帰りがけ順に番号付けする
  2回目のDFSでは辺の向きを逆にし、大きい番号の頂点からDFS
  到達できたところは強連結成分、まだ到達してない頂点があれば、そ
   のうち最も大きな番号の頂点からまたDFS、を繰り返す
強連結成分分解の様子と解


        1                      1
                10                       8,
                                         10
    2
                     8   2,4
                          ,9
4       9   3                        3

                     5                    5
    7       6            7         6




                               :始点

                               :その他の点
なにかやらかすかもしれないところ


元ネタ

 元はリア充を爆発させる問題だった
  リア充を爆発させたいが、手は汚したくないのでどんどん巻き込まれ
   て爆発すればいい、けど非リアの同志は爆発させたくない、みたいな


 最初は1人爆発させたときに爆破できる最高人数の予定だった
  n人全員を始点にしてDFSやるだけ(C問題相当)


 でもやっぱりリア充は全員駆逐すべきだと思ったので最小何人爆
  発させればよいかに変えたらそこそこ難しくなったのでDに変更
  でもちょっと難易度不足を感じたのでkd木による実装量かさまし
  (ホントはいい感じのkd木ライブラリ欲しかっただk…げふんげふん)


 虚しくなったさすがに物騒なのでそれっぽい感じの話に変えた

More Related Content

What's hot

DDPC 2016 予選 解説
DDPC 2016 予選 解説DDPC 2016 予選 解説
DDPC 2016 予選 解説AtCoder Inc.
 
AtCoder Regular Contest 021 解説
AtCoder Regular Contest 021 解説AtCoder Regular Contest 021 解説
AtCoder Regular Contest 021 解説AtCoder Inc.
 
AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説AtCoder Inc.
 
Code Formula 2014 予選A 解説
Code Formula 2014 予選A 解説Code Formula 2014 予選A 解説
Code Formula 2014 予選A 解説AtCoder Inc.
 
AtCoder Regular Contest 031 解説
AtCoder Regular Contest 031 解説AtCoder Regular Contest 031 解説
AtCoder Regular Contest 031 解説AtCoder Inc.
 
Code Formula 予選B 解説
Code Formula 予選B 解説Code Formula 予選B 解説
Code Formula 予選B 解説AtCoder Inc.
 
AtCoder Beginner Contest 022 解説
AtCoder Beginner Contest 022 解説AtCoder Beginner Contest 022 解説
AtCoder Beginner Contest 022 解説AtCoder Inc.
 
AtCoder Regular Contest 035 解説
AtCoder Regular Contest 035 解説AtCoder Regular Contest 035 解説
AtCoder Regular Contest 035 解説AtCoder Inc.
 
AtCoder Regular Contest 023 解説
AtCoder Regular Contest 023 解説AtCoder Regular Contest 023 解説
AtCoder Regular Contest 023 解説AtCoder Inc.
 
CODE FESTIVAL 2015 予選A 解説
CODE FESTIVAL 2015 予選A 解説CODE FESTIVAL 2015 予選A 解説
CODE FESTIVAL 2015 予選A 解説AtCoder Inc.
 
AtCoder Beginner Contest 024 解説
AtCoder Beginner Contest 024 解説AtCoder Beginner Contest 024 解説
AtCoder Beginner Contest 024 解説AtCoder Inc.
 
AtCoder Regular Contest 020 解説
AtCoder Regular Contest 020 解説AtCoder Regular Contest 020 解説
AtCoder Regular Contest 020 解説AtCoder Inc.
 
AtCoder Regular Contest 036 解説
AtCoder Regular Contest 036 解説AtCoder Regular Contest 036 解説
AtCoder Regular Contest 036 解説AtCoder Inc.
 
AtCoder Regular Contest 038 解説
AtCoder Regular Contest 038 解説AtCoder Regular Contest 038 解説
AtCoder Regular Contest 038 解説AtCoder Inc.
 
AtCoder Regular Contest 017
AtCoder Regular Contest 017AtCoder Regular Contest 017
AtCoder Regular Contest 017AtCoder Inc.
 
AtCoder Regular Contest 024 解説
AtCoder Regular Contest 024 解説AtCoder Regular Contest 024 解説
AtCoder Regular Contest 024 解説AtCoder Inc.
 
AtCoder Beginner Contest 021 解説
AtCoder Beginner Contest 021 解説AtCoder Beginner Contest 021 解説
AtCoder Beginner Contest 021 解説AtCoder Inc.
 

What's hot (20)

DDPC 2016 予選 解説
DDPC 2016 予選 解説DDPC 2016 予選 解説
DDPC 2016 予選 解説
 
abc032
abc032abc032
abc032
 
AtCoder Regular Contest 021 解説
AtCoder Regular Contest 021 解説AtCoder Regular Contest 021 解説
AtCoder Regular Contest 021 解説
 
AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説
 
WUPC2012
WUPC2012WUPC2012
WUPC2012
 
Code Formula 2014 予選A 解説
Code Formula 2014 予選A 解説Code Formula 2014 予選A 解説
Code Formula 2014 予選A 解説
 
AtCoder Regular Contest 031 解説
AtCoder Regular Contest 031 解説AtCoder Regular Contest 031 解説
AtCoder Regular Contest 031 解説
 
Code Formula 予選B 解説
Code Formula 予選B 解説Code Formula 予選B 解説
Code Formula 予選B 解説
 
AtCoder Beginner Contest 022 解説
AtCoder Beginner Contest 022 解説AtCoder Beginner Contest 022 解説
AtCoder Beginner Contest 022 解説
 
AtCoder Regular Contest 035 解説
AtCoder Regular Contest 035 解説AtCoder Regular Contest 035 解説
AtCoder Regular Contest 035 解説
 
AtCoder Regular Contest 023 解説
AtCoder Regular Contest 023 解説AtCoder Regular Contest 023 解説
AtCoder Regular Contest 023 解説
 
CODE FESTIVAL 2015 予選A 解説
CODE FESTIVAL 2015 予選A 解説CODE FESTIVAL 2015 予選A 解説
CODE FESTIVAL 2015 予選A 解説
 
AtCoder Beginner Contest 024 解説
AtCoder Beginner Contest 024 解説AtCoder Beginner Contest 024 解説
AtCoder Beginner Contest 024 解説
 
AtCoder Regular Contest 020 解説
AtCoder Regular Contest 020 解説AtCoder Regular Contest 020 解説
AtCoder Regular Contest 020 解説
 
AtCoder Regular Contest 036 解説
AtCoder Regular Contest 036 解説AtCoder Regular Contest 036 解説
AtCoder Regular Contest 036 解説
 
AtCoder Regular Contest 038 解説
AtCoder Regular Contest 038 解説AtCoder Regular Contest 038 解説
AtCoder Regular Contest 038 解説
 
AtCoder Regular Contest 017
AtCoder Regular Contest 017AtCoder Regular Contest 017
AtCoder Regular Contest 017
 
AtCoder Regular Contest 024 解説
AtCoder Regular Contest 024 解説AtCoder Regular Contest 024 解説
AtCoder Regular Contest 024 解説
 
AtCoder Beginner Contest 021 解説
AtCoder Beginner Contest 021 解説AtCoder Beginner Contest 021 解説
AtCoder Beginner Contest 021 解説
 
Convex Hull Trick
Convex Hull TrickConvex Hull Trick
Convex Hull Trick
 

Viewers also liked

Revisiting floorplan representation
Revisiting floorplan representationRevisiting floorplan representation
Revisiting floorplan representationYuma Inoue
 
Thesis Defence for Doctor of Information Science
Thesis Defence for Doctor of Information ScienceThesis Defence for Doctor of Information Science
Thesis Defence for Doctor of Information ScienceYuma Inoue
 
博士論文執筆の流れ
博士論文執筆の流れ博士論文執筆の流れ
博士論文執筆の流れYuma Inoue
 
AtCoder Regular Contest 048
AtCoder Regular Contest 048AtCoder Regular Contest 048
AtCoder Regular Contest 048AtCoder Inc.
 
RUPC2014_Day3_E
RUPC2014_Day3_ERUPC2014_Day3_E
RUPC2014_Day3_EYuma Inoue
 
RUPC2014_Day3_F
RUPC2014_Day3_FRUPC2014_Day3_F
RUPC2014_Day3_FYuma Inoue
 
RUPC2014_Day3_D
RUPC2014_Day3_DRUPC2014_Day3_D
RUPC2014_Day3_DYuma Inoue
 
RUPC2014_Day3_A
RUPC2014_Day3_ARUPC2014_Day3_A
RUPC2014_Day3_AYuma Inoue
 
RUPC2014_Day3_Summary
RUPC2014_Day3_SummaryRUPC2014_Day3_Summary
RUPC2014_Day3_SummaryYuma Inoue
 
RUPC2014_Day3_B
RUPC2014_Day3_BRUPC2014_Day3_B
RUPC2014_Day3_BYuma Inoue
 
RUPC2014_Day3_G
RUPC2014_Day3_GRUPC2014_Day3_G
RUPC2014_Day3_GYuma Inoue
 
RUPC2014_Day3_C
RUPC2014_Day3_CRUPC2014_Day3_C
RUPC2014_Day3_CYuma Inoue
 
Graph Clustering on Missing Data
Graph Clustering on Missing DataGraph Clustering on Missing Data
Graph Clustering on Missing DataYuma Inoue
 
2年生向けICPC紹介資料
2年生向けICPC紹介資料2年生向けICPC紹介資料
2年生向けICPC紹介資料Yuma Inoue
 
LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~Yuma Inoue
 

Viewers also liked (20)

Arc 010 b
Arc 010 bArc 010 b
Arc 010 b
 
Revisiting floorplan representation
Revisiting floorplan representationRevisiting floorplan representation
Revisiting floorplan representation
 
Thesis Defence for Doctor of Information Science
Thesis Defence for Doctor of Information ScienceThesis Defence for Doctor of Information Science
Thesis Defence for Doctor of Information Science
 
博士論文執筆の流れ
博士論文執筆の流れ博士論文執筆の流れ
博士論文執筆の流れ
 
Arc 010 c
Arc 010 cArc 010 c
Arc 010 c
 
AtCoder Regular Contest 048
AtCoder Regular Contest 048AtCoder Regular Contest 048
AtCoder Regular Contest 048
 
RUPC2014_Day3_E
RUPC2014_Day3_ERUPC2014_Day3_E
RUPC2014_Day3_E
 
RUPC2014_Day3_F
RUPC2014_Day3_FRUPC2014_Day3_F
RUPC2014_Day3_F
 
RUPC2014_Day3_D
RUPC2014_Day3_DRUPC2014_Day3_D
RUPC2014_Day3_D
 
RUPC2014_Day3_A
RUPC2014_Day3_ARUPC2014_Day3_A
RUPC2014_Day3_A
 
RUPC2014_Day3_Summary
RUPC2014_Day3_SummaryRUPC2014_Day3_Summary
RUPC2014_Day3_Summary
 
RUPC2014_Day3_B
RUPC2014_Day3_BRUPC2014_Day3_B
RUPC2014_Day3_B
 
RUPC2014_Day3_G
RUPC2014_Day3_GRUPC2014_Day3_G
RUPC2014_Day3_G
 
RUPC2014_Day3_C
RUPC2014_Day3_CRUPC2014_Day3_C
RUPC2014_Day3_C
 
Senshu lt
Senshu ltSenshu lt
Senshu lt
 
Graph Clustering on Missing Data
Graph Clustering on Missing DataGraph Clustering on Missing Data
Graph Clustering on Missing Data
 
2年生向けICPC紹介資料
2年生向けICPC紹介資料2年生向けICPC紹介資料
2年生向けICPC紹介資料
 
Planar graph
Planar graphPlanar graph
Planar graph
 
LP Duality
LP DualityLP Duality
LP Duality
 
LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~
 

Similar to Arc 010 d

「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)
「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)
「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)Kensuke Otsuki
 
はじめてのパターン認識 第5章 k最近傍法(k_nn法)
はじめてのパターン認識 第5章 k最近傍法(k_nn法)はじめてのパターン認識 第5章 k最近傍法(k_nn法)
はじめてのパターン認識 第5章 k最近傍法(k_nn法)Motoya Wakiyama
 
Usp友の会勉強会、ジャクソン構造図の巻(前編)
Usp友の会勉強会、ジャクソン構造図の巻(前編)Usp友の会勉強会、ジャクソン構造図の巻(前編)
Usp友の会勉強会、ジャクソン構造図の巻(前編)umidori
 

Similar to Arc 010 d (6)

「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)
「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)
「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)
 
KDD2014 勉強会
KDD2014 勉強会KDD2014 勉強会
KDD2014 勉強会
 
データ処理
データ処理データ処理
データ処理
 
はじめてのパターン認識 第5章 k最近傍法(k_nn法)
はじめてのパターン認識 第5章 k最近傍法(k_nn法)はじめてのパターン認識 第5章 k最近傍法(k_nn法)
はじめてのパターン認識 第5章 k最近傍法(k_nn法)
 
Usp友の会勉強会、ジャクソン構造図の巻(前編)
Usp友の会勉強会、ジャクソン構造図の巻(前編)Usp友の会勉強会、ジャクソン構造図の巻(前編)
Usp友の会勉強会、ジャクソン構造図の巻(前編)
 
M1 gp_Disco
M1 gp_DiscoM1 gp_Disco
M1 gp_Disco
 

Arc 010 d