#HT12562. 神秘地图

神秘地图

题目描述

Cuber QQ 正在整理一张神秘地图。地图上一共有 nn 个地点,编号为 1,2,,n1,2,\dots,n。对于任意两个地点 i,ji,j,Cuber QQ 希望最终确定一个整数距离 d(i,j)d(i,j)

一份合法的距离表需要满足:

  • 对任意地点 ii,有 d(i,i)=0d(i,i)=0
  • 对任意两个不同地点 i,ji,j,有 d(i,j)=d(j,i)d(i,j)=d(j,i),并且 d(i,j)>0d(i,j)>0
  • 对任意三个地点 i,j,ki,j,k,都满足:d(i,j)d(i,k)+d(k,j)d(i,j)\le d(i,k)+d(k,j),也就是说,从 iijj 的距离,不能比“先到 kk,再从 kkjj”更长。

现在,Cuber QQ 已经知道了 mm 条距离记录。第 tt 条记录为 ut, vt, wtu_t,\ v_t,\ w_t,表示地点 utu_t 与地点 vtv_t 之间的距离必须恰好等于 wtw_t

现在 Cuber QQ 想请你判断,是否存在一种方法,补全所有尚未确定的距离,使得所有已知记录都被保留,并且整张距离表合法。

输入格式

第一行一个整数 TT,表示测试数据组数。

对于每一组测试数据,第一行包含两个整数 n,mn,m,表示地点数量和已知的距离记录。接下来的 mm 行,每行三个整数 ui,vi,wiu_i,v_i,w_i,表示一条记录。

输出格式

对于每组数据,输出一行。如果存在合法的补全方案,输出 YES;否则输出 NO

样例

4
4 4
1 2 3
2 3 4
1 3 7
3 4 2
3 3
1 2 2
2 3 2
1 3 5
3 2
1 2 1
2 3 1
3 1
1 3 100
YES
NO
YES
YES

样例解释

对于第 1 组数据,已知 d(1,2)=3,d(2,3)=4,d(1,3)=7d(1,2)=3,\quad d(2,3)=4,\quad d(1,3)=7。由于从 11 经过 2233 的距离为 3+4=73+4=7。与已知的 d(1,3)=7d(1,3)=7 不冲突,因此可以合法补全。

对于第 2 组数据,根据三角不等式,必须满足 d(1,3)d(1,2)+d(2,3)=4d(1,3)\le d(1,2)+d(2,3)=4,但输入中要求 d(1,3)=5d(1,3)=5,发生矛盾,所以不存在合法补全方案。

对于第 3 组数据,只知道 d(1,2)=1d(1,2)=1d(2,3)=1d(2,3)=1,没有要求 d(1,3)d(1,3) 必须是多少,所以可以令 d(1,3)=2d(1,3)=2

对于第 4 组数据,虽然它和第 3 组数据的点数相同,但不同测试数据互相独立。只知道 d(1,3)=100d(1,3)=100,可以合法补全。

数据规模与约定

对于所有测试数据,保证:$2\le T\le 20,2\le n\le 400,0\le m\le \frac{n(n-1)}{2},1\le u_t < v_t \le n,1\le w_t \le 10^9$。同一组数据中,任意一对地点至多出现一条距离记录。对于一个输入文件内的所有测试数据,保证 n500\sum n\le 500

测试点编号 额外约束 分数
1‑10 每组数据中,已知记录形成一片森林 10
11‑25 每组数据均满足 n30n\le 30 15
26‑45 每组数据中,每一对不同地点之间都有一条已知记录 20
46‑70 每组数据均满足 n200n\le 200 25
71‑100 无额外限制 30

原题链接

原题链接