社区讨论
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样例输出:欧拉路或欧拉回路
样例输入
CPP5 5
1 2
2 3
3 4
4 5
5 1
样例输出
CPP1 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 条回复,欢迎继续交流。
正在加载回复...