B. Mr. Kitayuta ' s colorful Graph time limit/test 1 second memory limit per test 256 megabytes input standard input out Put standard output
Mr. Kitayuta has just bought an undirected graph consisting of n vertices and m edges. The vertices of the graph are numbered from 1 to N. Each edge, namely edge I, has a color CI, connecting vertex ai and bi.
Mr Kitayuta wants you to process the following Q queries.
In the i-th query, him gives you two Integers-ui and VI.
Find the number of the colors this satisfy the following condition:the edges of that color connect vertex UI and Vertex v I directly or indirectly. Input
The "I" of the input contains space-separated two integers-n and M (2≤n≤100, 1≤m≤100), denoting the Numbe R of the vertices and the number of the edges, respectively.
The next m lines contain space-separated three Integers-ai, Bi (1≤ai < bi≤n) and CI (1≤ci≤m). Note So there can be multiple edges between two vertices. However, there are no multiple edges of the same color between two, which is, if vertices, (AI, Bi, ci) i≠j (AJ, BJ, CJ ).
The next line contains a integer-q (1≤q≤100), denoting the number of the queries.
Then follows q lines, containing space-separated two Integers-ui and VI (1≤ui, vi≤n). It is guaranteed that ui≠vi. Output
For each query, print the answer in a separate line. Sample Test (s) input
4 5 1 2 1 1 2 2 2 3 1 2 3 3 2 4 3 3 1 2 3 4 1-
4
Output
2
1
0
Input
5 7 1 5 1 2 5 1 3 5 1 4 5 1 1 2 2 2 3 2 3 4 2 5 1 5 5 1 2 5-
1 5
1 4
Output
1
1
1
1
2
Note
Let ' s consider the "the". The figure above shows. Vertex 1 and Vertex 2 are connected by color 1 and 2. Vertex 3 and Vertex 4 are connected by Color 3.
Vertex 1 and Vertex 4 are not connected by any single color. Solution: The problem is to create a diagram, there are many different colors of the edge, each query two sides of the number of different colors of the path. This associative Floyd algorithm allows you to enumerate the color of the edges, find the shortest path for each color, and then count the number of short circuits in different colors. Code
<pre name= "code" class= "CPP" > #include <iostream> #include <cstdio> #include <cstring> using
namespace Std;
int mat[102][102][102];
int main () {int n,m;
while (~SCANF ("%d%d", &n,&m)) {memset (mat,0,sizeof (Mat));
for (int i=1; i<=m; i++) {int a,b,c;
scanf ("%d%d%d", &a,&b,&c);
Mat[a][b][c]=1;
Mat[b][a][c]=1;
for (int c=1;c<=m;c++) {for (int k=1;k<=n;k++) {for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) {if (Mat[i][k][c]&&mat[k][j][c]) {Mat I [j]
[C]=1;
Mat[j][i][c]=1;
{}}} int q;
scanf ("%d", &q);
for (int i=0;i<q;i++) {int a,b;
int sum=0;
scanf ("%d%d", &a,&b); for (int i=1;i<=m;i++) {Sum+=mat[a][b][i];
printf ("%d\n", sum);
} return 0; }