問題
世界地図において極東に位置する$R$帝国は、近年重大な社会問題を抱えていた。
それは、「友達の友達」は友達であるかというものである。
この国では友好関係が非常に重視される。
それ故「友達の友達の友達の・・・」となると、友達であるかどうかも分からないのだ。
そこで現帝王であるキング山本は、友達の定義を以下のようにした。
- 「友達」が現れた回数が$C$回以下のとき、友達とする。
例えば、$C=2$の場合、「友達」が現れた回数が二回以下の場合、友達となる。つまり、「友達」と「友達の友達」のみが友達として認められる。
$R$帝国の役人であるあなたは、
$N$人の交友関係からそれぞれの友達の人数を算出することになった。
入力
入力は以下の形式で標準入力から与えられる。
$N$ $M$ $C$ $a_1$ $b_1$ $a_2$ $b_2$ $\vdots$ $a_M$ $b_M$
1行目に調べる人数$N$、交友関係の数$M$、「友達」の回数$C$が与えられる。
続く$M$行に$a_i$と$b_i$が「友達」であることが示される。
出力
1~N人目の友達の人数を改行区切りで出力すること。 出力の最後に改行を入れること。
制約
全ての入出力ケースについて以下を満たす。
- $2 \leq N \leq 1000$
- $1 \leq M \leq 1000$ 。
- $1 \leq C \leq 999$
- $1 \leq a_i,b_i \leq N$
入出力例
入力例1
3 2 1 1 2 2 3
出力例1
1 2 1
今回は「友達」が一回以下の場合友達になります。 1と3は「友達の友達」なので友達ではありません。
入力例2
3 3 2 1 2 2 3 3 1
出力例2
2 2 2
$N$人全てが友達になります。幸せですね。
解説(クリックで開く)
この問題は、「友達」の回数である$C$が重要です。問題文に友達という単語があるため一見$UnionFind$に見えますが、$UnionFind$はグループ分けをするデータ構造のため、使用することができません。ではどうするのかというと、「友達」の回数を「人と人との距離」と考え、$BFS$や$DFS$を行い、各人同士の距離が$C$以下の場合を数えます。$BFS$が想定解です。(そっちの方が楽だと思います。)