1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

D - Coloring Edges on Tree

Posted at

2日かけてできませんでした〜〜〜〜!!!!泣

#問題
https://atcoder.jp/contests/abc146/tasks/abc146_d
スクリーンショット 2019-12-06 19.45.33.png

#回答

N = gets.to_i
A,B = (N-1).times.map{gets.split.map(&:to_i)}.transpose
C=Array.new(N-1,0)
list=Array.new(N).map{Array.new}
for i in 0..N-2
  for j in 1..N
    if list[A[i]-1].include?(j)
      next
    end
    if list[B[i]-1].include?(j)
      next
    end
    list[A[i]-1].push(j)
    list[B[i]-1].push(j)
    C[i] = j
    break
  end
end
puts C.max,C

#結果
スクリーンショット 2019-12-06 19.51.33.png

#感想
マジで悔しすぎて12時間以上考えたのに解けなくて泣いてる。

上のやり方だと、色を1から順に入れていくので、
1 2 → 1の色
4 5 → 1の色
3 4 → 頂点4で1の色を使っているので2の色
2 3 → 頂点2で1の色、頂点3で2の色を使っているので3の色
で3色必要になってしまうのだが、
実際は
1 2 → 1の色
4 5 → 2の色
3 4 → 1の色
2 3 → 2の色
で2色で良いので、ダメみたい、

なので、幅優先探索ってやつをやる必要があるみたいなのだが、
辺の場所などの保持が分からなくなって頭がパンクしました。おわり

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?