0.はじめに
コンテスト予選を兼ねてるそうで、Dから難しいよーと注意書きがありました。
実際、なかなか難しくてちょっと手が出なかったです。
1.A - Many A+B Problems
素直にN回ループでAB入力して、足した数を出力でAC。
https://atcoder.jp/contests/abc288/submissions/38597107
2.B - Qualification Contest
最初、単純にK人分入力して、そのままK人表示してしまいましたが
よく見たら辞書順出力でした・・・。
K人分入力してリストに突っ込み、そのリストをソートしてから
全部表示でACでした。
https://atcoder.jp/contests/abc288/submissions/38606833
3.C - Don’t be cycle
解法が思いつかなかったので、まずは閉路判定方法をググる。
すると、Union-Findで同じ根を持つ辺が出来た際に
閉路ができるとのこと。
次にUnion-Findについてぐぐり、動画などを見て大体を把握して
サンプルコードを拾ってきて、UnionFind関数を実装したうえで
組み立て。
M個の辺を読み込み、辺ごとにUnite処理
Uniteする辺の2つの頂点が同じ根を持つか判定し
同じ根であればans変数に1を加算。
全部の辺を読み込んだら、最後にans変数を出力して終わり。
一つの辺を消すことで2つの閉路を打破できるみたいなケースが
あるかも!?と悩んでましたがちょっと考えたらそういう場合は
ないなーと思えたのでとりあえず試したらAC頂けました。
https://atcoder.jp/contests/abc288/submissions/38618517
参考サイト:https://procon.fun/code/unionfind-cycle/
以上