谎言 I
1000ms
256MB
展开
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目背景
适度游戏有益大脑,过度游戏伤害身心。
小 B 因为过度沉迷于游戏,每天就只想着打游戏,不学习、不运动、无其他良好的爱好,学业荒废,成绩下降......若干年后,只能去工地搬砖。
题目描述
这天,小 B 正在专心的打游戏,可是他的妈妈却突然来查岗,他凭借着迅雷不及掩耳之势马上把王者关了,为了让妈妈相信他在学习,小 B 编出了\(n\)个谎言来让妈妈相信(让妈妈相信需要至少 \(m\) 的可信度),每个谎言都有它的可信度,但同时如果两个 自相矛盾 的谎言同时出现,则会被妈妈拆穿。
请你帮小 B 选择尽量少个谎言,让小 B 的妈妈相信他说的话是真的。
输入格式
第一行两个整数 \(n,m\),表示谎言数量和至少需要的可信度。
第 \(2\) 到 \(n+1\) 行,每行 \(2\) 个整数 \(a_i,b_i\),其中 \(a_i\) 表示第 \(i\) 个谎言的可信度,当这个谎言和第 \(b_i\) 个谎言无法共存,否则会被妈妈发现,如果不存在这样的谎言,\(b_i = -1\)。
输出格式
当小 B 可以让妈妈相信自己时,输出最少的选择数量,否则输出 you will die
。
样例
5 12
10 5
4 3
2 2
20 -1
3 1
1
解释#1
选择第 \(4\) 个谎言即可。
5 23
10 5
10 3
12 2
8 -1
3 1
3
解释#2
虽然第二个谎言加第三个谎言可信度达到了 \(22\),但是两者自相矛盾。至少需要三个谎言才能让妈妈相信,方案较多,比如可以选择第 \(1,3,4\) 个谎言或者第 \(1,2,4\) 均可。
5 22
10 5
10 3
10 2
1 -1
10 1
you will die
解释#3
最大的可信度是 \(21\)。
数据范围
- 对于 \(30\%\) 的数据:\(1≤n≤20\),\(1≤m≤10^2\)。
- 对于 \(60\%\) 的数据:\(1≤n≤10^3\),\(1≤m≤10^4\)。
- 对于 \(100\%\) 的数据:\(1≤n≤10^5\),\(1≤a_i<m≤10^6\)。
- 数据保证,对于任意的 \(1\le i,j\le n\),都有 \(b_i\neq i\),并且如果 \(b_i=j\),则 \(b_j=i\)。
- \(b_1,b_2,...,b_n\) 互不相同。