采用邻接矩阵表示法创建无向图G ,依次输出各顶点的度。
输入第一行中给出2个整数i(0<i≤10),j(j≥0),分别为图G的顶点数和边数。
输入第二行为顶点的信息,每个顶点只能用一个字符表示。
依次输入j行,每行输入一条边依附的顶点。
依次输出各顶点的度,行末没有最后的空格。
5 7
ABCDE
AB
AD
BC
BE
CD
CE
DE
2 3 3 3 3
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include <stdio.h>
#include <string.h>
#define MAX 10
int main()
{
int i, j;
int numver, numEdges;
char ver[MAX + 1];
int adj[MAX][MAX] = {0};
int degrees[MAX] = {0};
// 输入顶点数和边数
scanf("%d %d", &numver, &numEdges);
// 输入顶点信息
scanf("%s", ver);
// 构建邻接矩阵
for (i = 0; i < numEdges; i++)
{
char u, v;
scanf(" %c%c", &u, &v); // 注意前面的空格,用来跳过换行符
int uIndex = strchr(ver, u) - ver;
int vIndex = strchr(ver, v) - ver;
adj[uIndex][vIndex] = 1;
adj[vIndex][uIndex] = 1; // 因为是无向图
}
// 计算每个顶点的度
for (i = 0; i < numver; i++)
{
for (j = 0; j < numver; j++)
{
if (adj[i][j] == 1)
{
degrees[i]++;
}
}
}
// 输出每个顶点的度
for (i = 0; i < numver; i++)
{
if (i > 0)
{
printf(" ");
}
printf("%d", degrees[i]);
}
printf("\n");
return 0;
}
因篇幅问题不能全部显示,请点此查看更多更全内容