站外题,求大佬帮助
  • 板块题目总版
  • 楼主赵德铭
  • 当前回复12
  • 已保存回复12
  • 发布时间2020/8/11 21:43
  • 上次更新2023/11/6 20:36:09
查看原帖
站外题,求大佬帮助
95641
赵德铭楼主2020/8/11 21:43

这道题我错哪了也不知道,好崩溃 题目如下这个老师是真的懒,题写的特短: 题目描述 输入一个无向连通图的,判断这个图是否存在欧拉回路,如果没有则输出“no oula circle”,如果有,输出以顶点1开始的一条欧拉回路,回路上顶点序号优先小的 输入 第一行一个整数n和k,表示这个图有n个顶点、k条边,接下来k行,每行两个整数ai和aj,表示顶点ai和aj之间有一条边 输出 如果不存在欧拉回路,请输出“no oula circle”,如果有欧拉回路,请输出顶点1开始的欧拉回路的顶点编号 现在,亮出本蒟蒻的代码写的不好的话望大佬理解

#include<bits/stdc++.h>
using namespace std;
int du[10001];    
int n,m,cnt=0,jj=1,d=0,le,o=0;
int a[5001][5001];
int r[10001];
void dd(int q){
	r[o++]=q;
	if(le==0){
		d=1;
		return;
	}
	le--;
	for(int i=1;i<=n;i++){
		if(a[q][i]==1){
			a[q][i]=0;
			a[i][q]=0;
			dd(i);
			if(d)return;
			a[i][q]=1;
			a[q][i]=1;
		}
	}
	o--;
	le++;
}
int main()
{
    cin>>n>>m;
    for(int j=1;j<=m;j++)
    {
        int x,y;
        cin>>x>>y;
        a[x][y]=1;
        a[y][x]=1;
        du[x]+=1;
        du[y]+=1;
    }
    for(int j=1;j<=n;j++){
    	if(du[j]==0){
    		cout<<"no oula circle";
    		return 0;
		}
    	if(du[j]%2==1){
   			cnt++;
    		jj=j;
		}
	}
    if(cnt>2){
    	cout<<"no oula circle";
    	return 0;
	}
	le=m; 
	dd(jj);
	for(int i=0;i<o;i++)cout<<r[i]<<' ';
	return 0;
}

谢谢各位大佬的支持与帮助!

2020/8/11 21:43
加载中...