专业网站建设科技公司,国外最开放的浏览器是哪个,怎么制作一个免费的网站模板,辽宁注册公司网站题目再现
题目内容#xff1a;
给定一个节点有权重的图#xff0c;
请你计算与一个节点相邻的所有节点的权重和。
节点编号为1~N。
每个节点的编号即为他的权重。输入格式:
只有一组测资。
第一行有三个数字#xff0c;N、M、Q。
N表示这张图有多少节点#xff0c;
M表示这…
题目再现
题目内容
给定一个节点有权重的图
请你计算与一个节点相邻的所有节点的权重和。
节点编号为1~N。
每个节点的编号即为他的权重。输入格式:
只有一组测资。
第一行有三个数字N、M、Q。
N表示这张图有多少节点
M表示这张图有多少边
Q表示会有多少个询问。
之后M行每行有两个数字a、b
代表a与b是相邻的。
之后Q行每行有一个数字x
代表询问的点编号。
给定的编不会重复
而且不会有自己和自己相连的情况。
测资范围
0 N 1000
0 M 20000
0 Q 2000输出格式
对于每一个询问计算与该节点相邻的所以节点权重和。
将所有询问的答案加总后再输出。输入样例
10 8 2
1 2
1 3
2 5
2 6
3 8
10 9
8 6
3 5
1
3输出样例
19算法实现 这个题是一个图的操作可以使用邻接矩阵和邻接表来实现根据题意这里选择用邻接表来实现。
#include stdio.h
#include stdlib.htypedef struct EdgeNode{int adjvex;struct EdgeNode *next;
}EdgeNode;typedef struct VertexNode{struct EdgeNode *next;
}VertexNode;int main(){int N, M, Q;int a, b, i, z;EdgeNode *edgA, *edgB, *edgTmp;long long sum 0;scanf(%d %d %d, N, M, Q);VertexNode VertexList[N];for(i 0; i N; i){VertexList[i].next NULL;}while(M --){scanf(%d %d, a, b);edgA (EdgeNode *)malloc(sizeof(EdgeNode));edgB (EdgeNode *)malloc(sizeof(EdgeNode));edgA-next VertexList[b].next;edgB-next VertexList[a].next;edgA-adjvex a;edgB-adjvex b;VertexList[a].next edgB;VertexList[b].next edgA;}while(Q --){scanf(%d, z);edgTmp VertexList[z].next;while(edgTmp){sum edgTmp-adjvex;edgTmp edgTmp-next;}}printf(%lld, sum);return 0;
} 博客名称王乐平博客 博客地址http://blog.lepingde.com CSDN博客地址http://blog.csdn.net/lecepin