小美参加的编程夏令营引入了新的导师分配系统:
系统配置有 m 位导师(编号 1−m)和 n 位学生(编号 1−n)
每位学生提交两个不同的导师志愿(ai 和 bi)
分配规则(按学生编号顺序处理):
首先尝试分配第一志愿导师 ai。如果该导师未被选中,则成功分配,否则尝试第二志愿 bi
如果第二志愿导师未被选中,则成功分配
如果两个志愿导师都已被选中,则该学生分配失败
一旦导师被分配给某个学生,就不能再分配给其他学生
对于每位学生i,需要回答:
"如果只从第i位学生开始按顺序处理到最后一位学生(即i~n号学生),最终会有多少人能成功分配到导师?
特别注意:
每个查询相互独立,即考虑不同的初始状态-导师一旦被分配就不可再选
输入第一行是两个整数 n,m,分别表示同学数量和教练数量(教练编号为 1−m)。接下来 n 行,每行包含两个整数 ai,bi,含义如题。
输出 n 行,每行包含一个整数表示第 i 个同学应该给出的答案。
4 2 1 2 1 2 1 2 1 2
2 2 2 1
【样例解释】
对1号学生的查询:
1选1号导师(成功)
2选2号导师(成功)
3、4号无法选择
→答案2
对2号学生的查询:
2选1号导师(成功)
3选2号导师(成功)
4号无法选择
→答案2
对3号学生的查询:
3选1号导师(成功)
4选2号导师(成功)
→答案2
对4号学生的查询:
4选1号导师(成功)>答案1
【数据范围】
对于10%的数据,n,m≤5;
对于30%的数据,n,m≤1000;
对于100%的数据,1≤n,m≤100000,1≤(a)i,(b)i≤m,(a)i≠(b)i