← Home
write a go solution for Description:
You are given a weighted undirected graph on n vertices along with q triples (u,v,l), where in each triple u and v are vertices and l is a positive integer. An edge e is called useful if there is at least one triple (u,v,l) and a path (not necessarily simple) with the following properties:

- u and v are the endpoints of this path,
- e is one of the edges of this path,
- the sum of weights of all edges on this path doesn't exceed l.

Please print the number of useful edges in this graph.

Input Format:
The first line contains two integers n and m (2<=n<=600, 0<=m<=fracn(n-1)2).

Each of the following m lines contains three integers u, v and w (1<=u,v<=n, uneqv, 1<=w<=10^9), denoting an edge connecting vertices u and v and having a weight w.

The following line contains the only integer q (1<=q<=fracn(n-1)2) denoting the number of triples.

Each of the following q lines contains three integers u, v and l (1<=u,v<=n, uneqv, 1<=l<=10^9) denoting a triple (u,v,l).

It's guaranteed that:

- the graph doesn't contain loops or multiple edges;
- all pairs (u,v) in the triples are also different.

Output Format:
Print a single integer denoting the number of useful edges in the graph.

Note:
In the first example each edge is useful, except the one of weight 5.

In the second example only edge between 1 and 2 is useful, because it belongs to the path 1-2, and 10<=11. The edge between 3 and 4, on the other hand, is not useful.

In the third example both edges are useful, for there is a path 1-2-3-2 of length exactly 5. Please note that the path may pass through a vertex more than once.. Output only the code with no comments, explanation, or additional text.