问题 3506 --重建村庄

3506: 重建村庄

时间限制: 1 Sec  内存限制: 256 MB
提交: 26  解决: 13
[提交][状态][讨论版][命题人:]

题目描述

突如起来的地震摧毁了整个国度,在地震过后,所有村庄都造成了一定的损毁,而这场地震却没对公路造成什么影响,但这并不代表公路一定就能通行。

这个国家的每条公路都有自己的一个权值wi。第i条公路需要通行,当且仅当其两端的村庄有恰好一个村庄的建筑值恰好等于其权值。因此,为了让村庄之间能够互通(即两两村庄之间存在一条路径,并且该路径经过的每条公路均为可通行的公路),灾后重建十分重要。

现在你知道这个国家每条公路的权值以及其最初连接的村庄,你想知道在重建后,是否存在一个安排每个村庄建筑值的方式,使得村庄直接能够互通。

输入

第一行一个正整数T,表示数据组数。

对于每一组数据,第一行两个正整数n,m,分别表示村庄数和原来有的公路数量。接下来m行,每行三个正整数u,v,w,表示村庄u和村庄v之间存在一条权值为w的公路。

输入的图保证没有自环,但是可能有重边。

输出

对于每一组数据,如果存在一个安排每个村庄建筑值的方式,使得村庄直接能够互通,那么输出 YES,反之输出 NO.

样例输入

2
3 4
1 2 1
2 3 2
3 1 3
1 3 1
3 1
1 2 1

样例输出

YES
NO

提示




  • 对于 30% 的数据,1<=n,m<=200,对于单个测试点 s(n),s(m)<=500. s(n),s(m)表示所有测试点中的n,m的数量之和





  • 对于 60% 的数据,1<=n,m<=2000,对于单个测试点s(m)<=5000. s(n),s(m)表示所有测试点中的n,m的数量之和





  • 对于 100% 的数据,1<=n,m<=2*10^5,1<=T<=100对于单个测试点是s(n),s(m)<=2*10^5. s(n),s(m)表示所有测试点中的n,m的数量之和。对于每一条边,保证1<=u,v,w<=n  且u!=v 



来源

[提交][状态]