Adjacent Node Sum (图的邻接表表示 C语言)

来源:互联网 发布:java图形界面时间控件 编辑:程序博客网 时间:2024/04/30 13:27

Adjacent Node Sum



题目内容:

給定一個節點有權重的圖,
請你計算與一個節點相鄰的所有節點的權重和。
節點編號為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


时间限制:100ms内存限制:16000kb


coding using c

#include <stdio.h>#include <stdlib.h>struct _node{int value;struct _node* next;};typedef struct _node Node;void insert_node(Node* array[], int idx, int value){Node* p;p = (Node*)malloc(sizeof(Node));p->value = value;if(array[idx]==NULL){p->next = NULL;array[idx] = p;}else{p->next = array[idx];array[idx] = p;}}int count_sum(Node* head){int sum=0;while(head){sum+=head->value;head=head->next;}return sum;}/* run this program using the console pauser or add your own getch, system("pause") or input loop */int main(int argc, char *argv[]) {int n = 10, edges = 8, query = 2, idx, value,sum;scanf("%d %d %d",&n,&edges,&query);Node * array[n+1];int i=0,j=0;for(i=0;i<n+1;i++){array[i]=NULL;}for(i=0;i<edges;i++){scanf("%d %d", &idx, &value);insert_node(array, idx, value);insert_node(array, value, idx);}sum=0;for(i=0;i<query;i++){scanf("%d",&idx);sum+=count_sum(array[idx]);}printf("%d",sum);return 0;}


0 0
原创粉丝点击