1685: 图-建立无向加权图的邻接矩阵
金币值:2
定数:10
时间限制:1.000 s
内存限制:128 M
正确:11
提交:22
正确率:50.00% 命题人:
题目描述
从键盘输入一个无向加权图中的顶点信息和边信息建立对应的邻接矩阵。阅读分析程序编写CreateMGraph函数代码。
#include <stdio.h>
#define MAXVEX 100 // 最大顶点数由用户定义
#define INFINITY 65535 //表示无穷大
typedef char VertexType; // 顶点类型应由用户定义
typedef int EdgeType; // 边上的权值类型应由用户定义
typedef struct{
VertexType vexs[MAXVEX]; //注意:本题使用0号单元
EdgeType arc[MAXVEX][MAXVEX]; //注意:本题使用0号单元
int numNodes;
int numEdges;
} MGraph;
void PrintMGraph(MGraph G);
void CreateMGraph(MGraph &G);
int main(void){
MGraph G;
CreateMGraph(G);
PrintMGraph(G);
return 0;
}
void PrintMGraph(MGraph G){ // 打印图
int i,j;
for(i = 0; i <G.numNodes; i++) {
printf("%c\n",G.vexs[i]);
}
for(i = 0; i <G.numNodes; i++) {
for(j = 0; j <G.numNodes; j++)
printf("%10d",G.arc[i][j]);
printf("\n");
}
}
/*提交以下代码*/
void CreateMGraph(MGraph &G){// 建立无向加权图的邻接矩阵
} 输入格式
第1行输入两个整数,分别表示图中的顶点数n和边数m
第2行输入n个字符分别表示n个顶点信息
第3到m+2行每行输入3个值,分别表示顶点u和顶点v的下标值(u,v之间有一条边)以及边的权值
第2行输入n个字符分别表示n个顶点信息
第3到m+2行每行输入3个值,分别表示顶点u和顶点v的下标值(u,v之间有一条边)以及边的权值
输出格式
第1-n行每行输出一个字符分别表示图中的顶点信息
第n+1-2n行每行输出n个整数分别表示邻接矩阵中的每行信息
第n+1-2n行每行输出n个整数分别表示邻接矩阵中的每行信息
输入样例 复制
3 2
ABC
0 1 10
1 2 20
输出样例 复制
A
B
C
65535 10 65535
10 65535 20
65535 20 65535
提示
根据题目要求,第1行输入两个整数,第2行输入三个字符,此时需要注意正确处理第1行的结束符,否则会造成输入数据有误。具体处理方法如下:
scanf("%d %d\n",&G.numNodes,&G.numEdges);
或
scanf("%d %d",&G.numNodes,&G.numEdges); getchar();
scanf("%d %d\n",&G.numNodes,&G.numEdges);
或
scanf("%d %d",&G.numNodes,&G.numEdges); getchar();