#864. 分数调查
分数调查
题目名称:分数调查
题目背景
小Hi的学校总共有N名学生,编号从1到N。学校刚刚进行了一场全校的古诗文水平测验,但学校没有公布测验的成绩。因此,小Hi只能通过一些小道消息来了解同学们的分数情况,例如X号同学的分数比Y号同学的分数高S分。
题目描述
给定以下信息:
- N:学生总数。
- M:小Hi知道的学生分数比较消息的总数。
- Q:小Hi想要询问的学生分数比较数量。
接下来是M行,每行包含三个整数X, Y和S,表示X号同学的分数比Y号同学的分数高S分。
然后是Q行,每行包含两个整数X和Y,表示小Hi想知道X号同学的分数比Y号同学的分数高几分。
输入格式
第一行包含三个整数N, M和Q,分别表示学生总数、消息总数和询问数量。
接下来的M行,每行包含三个整数X, Y和S,满足1 ≤ X, Y ≤ N,且-1000 ≤ S ≤ 1000,表示X号同学的分数比Y号同学的分数高S分。
再接下来的Q行,每行包含两个整数X和Y,满足1 ≤ X, Y ≤ N,表示小Hi想要询问X号同学的分数比Y号同学的分数高几分。
输出格式
对于每个询问,如果根据已知的消息能够确定X号同学的分数比Y号同学的分数高几分,则输出这个差值;如果不能确定,则输出-1。
数据范围
- 对于50%的数据,1 ≤ N, M, Q ≤ 1000。
- 对于100%的数据,1 ≤ N, M, Q ≤ 100000。
输入输出样例
10 5 3
1 2 10
2 3 10
4 5 -10
5 6 -10
2 5 10
1 10
1 5
3 5
-1
20
0
解释
在这个例子中,根据给定的消息,我们可以推断出:
- 1号同学的分数比2号同学高10分。
- 2号同学的分数比3号同学高10分,因此1号同学的分数比3号同学高20分。
- 4号同学的分数比5号同学低10分。
- 5号同学的分数比6号同学低10分。
- 2号同学的分数比5号同学高10分,与前面的信息不矛盾。
对于询问:
- 1号同学的分数比10号同学的分数高几分?由于题目中没有给出1号与10号之间的直接关系,且没有足够的信息通过其他方式推断,因此输出-1。
- 1号同学的分数比5号同学的分数高几分?根据前面的推断,1号同学的分数比3号同学高20分,而3号与5号之间没有直接关系,但可以通过2号同学间接推断出1号同学的分数比5号同学高20分(因为2号比5号高10分,且1号比2号高10分)。
- 3号同学的分数比5号同学的分数高几分?根据前面的推断,可以直接得出3号同学的分数比5号同学高10分(因为2号比5号高10分,且1号比2号也高10分,但这里我们只关心3号和5号的关系,所以取2号到5号的差值即可)。