CodeForces
来源:互联网 发布:nginx lua 写入txt 编辑:程序博客网 时间:2024/06/05 14:45
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, he gives you two integers — ui and vi.
Find the number of the colors that satisfy the following condition: the edges of that color connect vertex ui and vertex vi directly or indirectly.
The first line of the input contains space-separated two integers — n and m (2 ≤ n ≤ 100, 1 ≤ m ≤ 100), denoting the number 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 that there can be multiple edges between two vertices. However, there are no multiple edges of the same color between two vertices, that is, if i ≠ j, (ai, bi, ci) ≠ (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.
For each query, print the answer in a separate line.
4 51 2 11 2 22 3 12 3 32 4 331 23 41 4
210
5 71 5 12 5 13 5 14 5 11 2 22 3 23 4 251 55 12 51 51 4
11112
Let's consider the first sample.
- 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.
下面有q个询问.
每条询问有两个整数 — ui 和 vi.
找到满足下面条件的颜色个数: 同一种颜色的路径连接顶点 ui 和 顶点 vi
第一行是两个整数 — n and m (2 ≤ n ≤ 100, 1 ≤ m ≤ 100), 代表着定点个数和边的个数
接下来m行有三个整数 — ai, bi (1 ≤ ai < bi ≤ n) and ci (1 ≤ ci ≤ m).
下一行有一个整数 — q (1 ≤ q ≤ 100), 代表询问次数
接下来q行,每行两个整数 — ui 和 vi (1 ≤ ui, vi ≤ n). 默认 ui ≠ vi.
对于每次询问,在单独的一行输出答案
下面有q个询问.
每条询问有两个整数 — ui 和 vi.
找到满足下面条件的颜色个数: 同一种颜色的路径连接顶点 ui 和 顶点 vi
第一行是两个整数 — n and m (2 ≤ n ≤ 100, 1 ≤ m ≤ 100), 代表着定点个数和边的个数
接下来m行有三个整数 — ai, bi (1 ≤ ai < bi ≤ n) and ci (1 ≤ ci ≤ m).
下一行有一个整数 — q (1 ≤ q ≤ 100), 代表询问次数
接下来q行,每行两个整数 — ui 和 vi (1 ≤ ui, vi ≤ n). 默认 ui ≠ vi.
//搜索#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>#define N 105using namespace std;int map[N][N][N];int n,m;int vis[N];void dfs(int i,int st){vis[st]=1;for(int j=1;j<=n;j++){if(map[st][j][i]==1&&!vis[j]){dfs(i,j);}}return ;}int main(){int i,j,a,b,c,t;while(scanf("%d %d",&n,&m)!=EOF){memset(vis,0,sizeof(vis));memset(map,0,sizeof(map));for(i=1;i<=m;i++){scanf("%d %d %d",&a,&b,&c);map[a][b][c]=map[b][a][c]=1;}scanf("%d",&t);int f;while(t--){f=0;memset(vis,0,sizeof(vis));scanf("%d %d",&a,&b);for(i=1;i<=m;i++){dfs(i,a);if(vis[b]) f++;memset(vis,0,sizeof(vis));}printf("%d\n",f);}}return 0;}
//并查集#include<stdio.h>#include<iostream>#include<string.h>#include<algorithm>#define N 105using namespace std;int f[N][N];int n,m;void init(){for(int i=1;i<=m;i++){for(int j=1;j<=n;j++){f[i][j]=j;}}return ;}int getf(int i,int x){if(f[i][x]==x) return x;else return f[i][x]=getf(i,f[i][x]);}void merge(int i,int x,int y){int t1=getf(i,x);int t2=getf(i,y);if(t1!=t2){f[i][t2]=t1;return ;}return ;}int main(){int i;int a,b,c;while(scanf("%d %d",&n,&m)!=EOF){init();for(i=1;i<=m;i++){scanf("%d %d %d",&a,&b,&c);merge(c,a,b);}int t,f;scanf("%d",&t);while(t--){f=0;scanf("%d %d",&a,&b);for(int j=1;j<=m;j++){if(getf(j,a)==getf(j,b)){f++;}}printf("%d\n",f);}}return 0;}
- codeforces~~~
- Codeforces
- codeforces
- Codeforces
- codeforces
- codeforces
- Codeforces
- Codeforces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- HPU 1413 StarFarming (最短路)
- 前端图片、动画基本知识
- POJ 1144 Network(求无向图中的割点)
- 数据结构之链表(四)
- Parenthesis CSU
- CodeForces
- 一步一步的搭建Tomcat服务器 + servlet + android客户端
- debug查看dos加载汇编源程序到内存过程分析
- 洛谷 3379 最近公共祖先(LCA 倍增)
- RecyclerView下划线
- 怎么压缩解压打包文件???
- POJ
- 构造数据类型struct,共用体union,枚举类型enum,宏#define的区别
- idea安装配置SVN