一笔画问题x(www我会了好开心!!这次是有向图~)

考试的方面:

(1)一笔画是怎样画的(水)

(2)能否实现一笔画(小技巧)

1)必须连通(有向与无向都必须满足)

2)有向图:(欧拉回路)如果出度等于入度,可以从任意点搜索;

(欧拉路)如果入度大于出度,则一定为终止点,而如果出度大于入度,则一定为开始的点(注意,如果入度与出度之间的差值大于一,则一定不能够形成欧拉路)

3)无向图:所有点的度数都为偶数时,才能实现欧拉回路||有两个点为奇数,且这两个点分别为起止点

一笔画性质:

■⒈凡是由偶点组成的连通图,一定可以一笔画成。画时可以把任一偶点为起点,最后一定能以这个点为终点画完此图。

■⒉凡是只有两个奇点的连通图(其余都为偶点),一定可以一笔画成。画时必须把一个奇点为起点,另一个奇点为终点。

■⒊其他情况的图都不能一笔画出。(奇点数除以二便可算出此图需几笔画成。)

  求欧拉路的算法很简单,使用深度优先遍历即可。

  根据一笔画的两个定理,如果寻找欧拉回路,对任意一个点执行深度优先遍历;找欧拉路,则对一个奇点执行DFS,时间复杂度为O(m+n),m为边数,n是点数。

l以下是寻找一个图的欧拉路的算法实现:

但是具有局限性,例如:

还恳请大佬看到能够给出改进的意见,

这个代码可能有点啰嗦……

l样例输入:第一行n,m,有n个点,m条边,以下m行描述每条边连接的两点。

l    5 5

l    1 2

l    2 3

l    3 4

l    4 5

l    5 1

l样例输出:欧拉路或欧拉回路

l    1 5 4 3 2 1

代码~

#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
const int Maxn=1001;

using namespace std;

int g[Maxn][Maxn];//记录邻接顶点
int n,m;//n个点,m条边
int gs,start=1,p=0;
/*
gs用来统计不为偶数的个数,
start用来寻找开始的点,
p用来统计最终路线走过的点的个数
*/
int du[Maxn];//记录每个的度
int road[Maxn];//记录路线

void findr(int i){
    for(int j=1;j<=n;j++){
        if(g[i][j]==1){
            g[j][i]=g[i][j]=0;//消除关系,防止再次走
            findr(j);
        }
    }road[++p]=i;//记录路线
 } 

int main()
{
    int a,b;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=m;i++){
        scanf("%d %d",&a,&b);
        g[a][b]=g[b][a]=1;//无向图
        du[a]++;
        du[b]++;
    }
    for(int k=1;k<=n;k++){
        if(du[k]%2!=0){
            gs++;
            start=k;//拥有奇数个数,将start赋值为奇点坐标
        }
    }
    if(gs==1||gs>2) {
            printf("Impossible!");
        return 0;
    }
    else if(gs==2||gs==0)findr(start);
    for(int qwq=1;qwq<=p;qwq++){
        printf("%d ",road[qwq]);
    }printf("\n");
    return 0;
}
时间: 2024-10-10 00:07:23

一笔画问题x(www我会了好开心!!这次是有向图~)的相关文章

成为IT精英,我奋斗了7年

这些日子 我一直在写一个实时操作系统内核,已有小成了,等写完我会全部公开,希望能够为国内IT的发展尽自己一份微薄的力量.最近看到很多学生朋友和我当年一样没有方向 ,所以把我的经历写出来与大家共勉,希望能给刚如行的朋友们一点点帮助. 一转眼我在IT行业学习工作已经七年多了,这期间我做过网页,写过MIS.数据库,应用程序,做过通信软件.硬件驱动.协议栈,到现在做操作系统内核和IC相关开发,这中间走了很多弯路,也吃了不少苦. 我上的是一个三流的高校,就连同一个城市的人多数都不知道.因为学校不好也就没有

项目管理学习笔记之五.沟通协调能力II

二.沟通模型:一个双向交流的过程 沟通模型: 编     码---------------->信息-----------------> 解码&歧义 发送者                                            接受者 解码&歧义<----------------信息<----------------- 编    码 从上面的模型可以看到, 沟通必须要是双向的, 而每一次的信息解码都会引入歧义,理解错误,所以我们要双方共同参与,多次沟通

实验二 总结

这次的实验,我觉得挺有难度的 代码如下: #include<stdio.h> #include<stdlib.h> #include<conio.h> #define getpch(type)(type*)malloc(sizeof(type)) #define NULL 0 struct jcb{ char name[10]; //work name int reachtime; int starttime; int needtime; int finishtime;

一个三流学校程序员的奋斗

文章是转载的,我不是一个毅力很强的人,总得一些激励人的文章来激励自己 我也在一个三流的学校,在找有关考研的文章的时候看到这篇文章 觉得不错,不敢独享,拿出来共勉-- 看完后我又一次明白,勤能补拙,一个人的成功,往往在于坚持 没有挫折,不经历艰难的日子,就没有美好的明天-- 忘了是谁说的:当你感觉到艰难的时候,正是你在走上坡路的时候 文章比较长,且写的比较早,专业术语也很多,但是我看了好几遍 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

如何自学成为一个WEB前端

WEB前端是做什么的? 那些什么高大上的介绍作者就略过了,简单来说就是做网页的,我们上网浏览的网站界面就是WEB前端工程师做的. 在互联网迅速发展的近几年,你上网冲浪的时候是不是感觉WEB网站越来越漂亮酷炫,功能越来越多,越来越复杂?各种类似桌面软件的Web应用大量出现,没错,WEB前端在其中有着很大的功劳. 发展方向 WEB前端的发展迅速导致其细分出了很多细分职业,我先来说一下我了解的WEB前端的分支,欢迎各位前辈补充: 1.网页设计方向(移动和PC):主要偏向html.css.js主要是做一

一个三流院校毕业的程序员奋斗历程 (转)

一个三流院校毕业的程序员奋斗历程 分类: 微薄2011-03-25 18:28 1300人阅读 评论(10) 收藏 举报 工作delphi嵌入式windowsmotorola开发工具 这些日子我一直在写一个实时操作系统内核,已有小成了,等写完我会全部公开,希望能够为国内IT的发展尽自己一份微薄的力量.最近看到很多学生朋友和我当年一样没有方向 ,所以把我的经历写出来与大家共勉,希望能给刚如行的朋友们一点点帮助. 一转眼我在IT行业学习工作已经七年多了,这期间我做过网页,写过MIS.数据库,应用程序

一位程序员的成长史

[转贴]这些日子我一直在写一个实时操作系统内核,已有小成了,等写完我会全部公开,希望能 够为国内IT的发展尽自己一份微薄的力量.最近看到很多学生朋友和我当年一样没有方向 ,所以把我的经历写出来与大家共勉,希望能给刚如行的朋友们一点点帮助. 一转眼我在IT行业学习工作已经七年多了,这期间我做过网页,写过MIS.数据库,应 用程序,做过通信软件.硬件驱动.协议栈,到现在做操作系统内核和IC相关开发,这中 间走了很多弯路,也吃了不少苦. 我上的是一个三流的高校,就连同一个城市的人多数都不知道.因为学校

一个IT人士的个人经历,给迷失方向的朋友

这些日子我一直在写一个实时操作系统内核,已有小成了,等写完我会全部公开,希望能够为国内IT的发展尽自己一份微薄的力量.最近看到很多学生朋友和我当年一样没有方向 ,所以把我的经历写出来与大家共勉,希望能给刚如行的朋友们一点点帮助. 一转眼我在IT行业学习工作已经七年多了,这期间我做过网页,写过MIS.数据库,应用程序,做过通信软件.硬件驱动.协议栈,到现在做操作系统内核和IC相关开发,这中间走了很多弯路,也吃了不少苦. 我上的是一个三流的高校,就连同一个城市的人多数都不知道.因为学校不好也就没有指

2014年6月底江城有感

不经意间,我已经来此处近两个月了.初来乍到的好奇和欣喜彷佛还在昨天.有时候梦中还会被“没有考上”之类的噩梦惊醒.醒来发现自己梦中悬着的心一下子就掉下来了,还好我在这里.在2014年即将过去一半之际,为自己写点东西,理一下自己的思路. 回想起去年那种临江扼腕的勇气和艰难的岁月,不禁感慨万千.人生总是充满了变数.费了那么大的劲才来到这里,耽误了一年时光来磨练心性.机会来之不易,不敢不兢兢业业,倍加珍惜.本科期间,最大的感触就是自己不够专注.感兴趣的颇多,社团.金融双学位.ACM.GIS大赛.计算机等