atcoder#ABC217F. [ABC217F] Make Pair
[ABC217F] Make Pair
题目描述
人の生徒が一列に並んでおり、左から順に生徒 , 生徒 , , 生徒 と番号が付いています。 人の生徒はどの 人も互いに仲が良いか悪いかのどちらかであり、 具体的には について生徒 と生徒 の仲が良く、これら以外のどの 人も仲が悪いです。
先生は以下の操作を 回繰り返して、 人組のペアを 組作ることにしました。
- 隣り合う 人であって仲が良いような 人をペアとして選び、列から抜く。
- 抜けた 人が列の端でなかったならば、その後、列を詰める。すなわち、抜けた 人の左右にいた 人が新しく隣り合う。
このとき、 回の操作方法としてあり得るものの数を で割った余りを求めてください。 ただし 回の操作方法が異なるとは、ある が存在して、 回目の操作で 選ばれた 人組がペアとして異なることをいいます。
输入格式
入力は以下の形式で標準入力から与えられる。
输出格式
操作方法としてあり得るものの数を で割った余りを出力せよ。
题目大意
题目描述
一共 个学生站成一排,其中有 对朋友关系。老师每次从队列中挑出两个相邻的学生作为同桌。为了关系和睦,每次选出的两个学生必须是朋友关系。选出的两个学生离开队列,空出来的位置左右合拢。
请问老师有多少种方式选完所有学生?对于两种选人的方案,即使同桌关系相同,只要离开队列的顺序不同,也算是不同的方案。
输入格式
先输入一行两个整数 、,然后输入 行数据,每行两个数 和 ,表示两个同学的朋友关系。
输出格式
一个数,为所得方案数对 取模后得到的值。
2 3
1 2
1 4
2 3
1
2 2
1 2
3 4
2
2 2
1 3
2 4
0
提示
制約
- はすべて異なる。
- 入力は全て整数である。
Sample Explanation 1
度目の操作で生徒 と生徒 を選び、 度目の操作で生徒 と生徒 を選ぶのが 唯一の操作方法です。 度目の操作で生徒 と生徒 を選ぶと、 生徒 と生徒 が残りますが、この 人は仲が悪いため 度目の操作でペアにすることができません。 よって、 を出力します。
Sample Explanation 2
度目の操作で生徒 と生徒 を選び、 度目の操作で生徒 と生徒 を選ぶのが 通り、 度目の操作で生徒 と生徒 を選び、 度目の操作で生徒 と生徒 を選ぶのが 通りであわせて 通りあります。 この つが区別されることに注意してください。
Sample Explanation 3
度目の操作で選べるペアが無いため条件をみたす操作方法は無く、 を出力します。