判断一个图是否欧拉图,用c语言
时间: 2024-03-18 09:39:38 浏览: 86
判断一个图是否为欧拉图的方法是计算每个顶点的度数,如果每个顶点的度数都是偶数,则该图为欧拉图;如果有两个顶点的度数为奇数,则该图为半欧拉图;否则,该图不是欧拉图也不是半欧拉图。
以下是使用C语言实现的代码:
```c
#include <stdio.h>
#define MAXN 100 // 最大顶点数
int G[MAXN][MAXN]; // 邻接矩阵表示图
int deg[MAXN]; // 存储每个顶点的度数
int main()
{
int n, m; // n为顶点数,m为边数
scanf("%d%d", &n, &m);
// 初始化邻接矩阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
G[i][j] = 0;
}
}
// 读入每条边,更新邻接矩阵和度数
for (int i = 0; i < m; i++) {
int u, v; // 边的两个端点
scanf("%d%d", &u, &v);
G[u][v] = 1;
G[v][u] = 1;
deg[u]++;
deg[v]++;
}
// 判断是否为欧拉图
int flag = 1; // 1表示欧拉图,0表示不是欧拉图
for (int i = 0; i < n; i++) {
if (deg[i] % 2 != 0) {
flag = 0;
break;
}
}
if (flag) {
printf("This is an Eulerian graph.\n");
} else {
printf("This is not an Eulerian graph.\n");
}
return 0;
}
```
该程序首先读入图的顶点数和边数,然后用邻接矩阵表示图,并计算每个顶点的度数。最后,遍历每个顶点的度数,判断是否为偶数,如果都是偶数,则输出“ This is an Eulerian graph.”,否则输出“This is not an Eulerian graph.”。
阅读全文