所设计的程序能够通过编译,并能够实现从给定10个结点的图G的邻接矩阵A, 判断G是否存在欧拉回路,存在则输出True,否则输出False。
输入格式
首先输入图G的种类,无向图:输入1,有向图:输入2;然后输入图G的邻接矩阵A。
输出格式
输出True表示存在欧拉回路,False表示不存在欧拉回路。

判断图是否存在欧拉回路
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 神仙别闹 2021-12-27 12:23关注
#include <iostream> #include <vector> using namespace std; int n; void dfs(int start,vector <vector <int> > &juzhen,vector <int> &vis) { vis[start]=1; for(int j=1;j<=n;j++) { if(vis[j]==0&&juzhen[start][j]!=0) {//如果节点没有被访问过,并且两点之间存在边 dfs(j,juzhen,vis); } } } int main() { int m,x,y,num=0; cout<<"请输入节点个数:"; cin>>n; cout<<"请输入边的个数:"; cin>>m; vector <vector <int> > juzhen(n+1,vector <int> (n+1,0)); vector <int> vis(n+1,0); for(int i=1;i<=m;i++) { cin>>x>>y; juzhen[x][y]=juzhen[y][x]=1; } dfs(1,juzhen,vis); for(int i=1;i<=n;i++) { if(vis[i]==0) {//说明该图不是连通图,所以直接输出0返回 cout<<0<<endl; return 0; } } for(int i=1;i<=n;i++) { num=0;//num用来判断每个节点的度是否为偶数 for(int j=1;j<=n;j++) { if(juzhen[i][j]==1) num++; } if(num%2!=0) {//不是偶数,就输出0返回 cout<<0<<endl; return 0; } } cout<<1<<endl; return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决评论 打赏 举报无用 8
悬赏问题
- ¥500 抖音主页视频预存加载卡bug
- ¥15 用汇编语言编写51单片机,定时闹钟程序
- ¥20 关于TRPD(波形特征)局部放电特征提取
- ¥15 C语言快速排序函数纠错
- ¥15 C#的一个应用程序书写
- ¥65 页面调接口时加载卡住不响应
- ¥35 用C语言解决编程问题
- ¥15 unity硬件连接与使用
- ¥15 鱼缸加热棒的数据分析或者实际案例也行
- ¥15 postgresql11安装完成后,pgadmin无法启动