社区讨论

dalao们看看,蒟蒻欧拉回路有问题;

学术版参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mi7w47md
此快照首次捕获于
2025/11/21 04:34
4 个月前
此快照最后确认于
2025/11/21 04:34
4 个月前
查看原帖
描述
CPP
如果一个图存在一笔画,则一笔画的路径叫做欧拉路,如果最后又回到起点,那这个路径叫做欧拉回路。
现给出一个图,希望你能找出一条欧拉路或欧拉回路。
输入
CPP
样例输入:第一行n,m,有n个点,m条边,以下m行描述每条边连接的两点。
输出
CPP
样例输出:欧拉路或欧拉回路
样例输入
CPP
5 5
1 2
2 3
3 4
4 5
5 1
样例输出
CPP
1 5 4 3 2 1
代码
CPP
#include<bits/stdc++.h>
using namespace std;
int n,m,sx,ex,start=1,ids=0;
int maps[1000][1000],flag[100000],a[100000];
void dfs(int x){
	for(int i=1;i<=m;i++){
		if(maps[x][i]){
			maps[x][i]=maps[i][x]=0;
			dfs(i);
			a[++ids]=i;
		}
	}
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		cin>>sx>>ex;
		maps[sx][ex]=maps[ex][sx]=1;
		flag[sx]++;
		flag[ex]++;
	}
	for(int i=1;i<=m;i++){
		if(flag[i]%2!=0){
			start=i;
			break;
		}
	}
	dfs(start);
	for(int i=1;i<=ids;i++){
		cout<<a[i]<<" ";
	}
	if(start==1) cout<<a[1]; 
	return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...