7-1 哥尼斯堡的“七桥问题” (25 分)

哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示。

可否走过这样的七座桥,而且每桥只走过一次?瑞士数学家欧拉(Leonhard Euler,1707—1783)最终解决了这个问题,并由此创立了拓扑学。

这个问题如今可以描述为判断欧拉回路是否存在的问题。欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路。现给定一个无向图,问是否存在欧拉回路?

输入格式:

输入第一行给出两个正整数,分别是节点数N (1)和边数M;随后的M行对应M条边,每行给出一对正整数,分别是该条边直接连通的两个节点的编号(节点从1到N编号)。

输出格式:

若欧拉回路存在则输出1,否则输出0。

输入样例1:

6 10
1 2
2 3
3 1
4 5
5 6
6 4
1 4
1 6
3 4
3 6

输出样例1:

1

输入样例2:

5 8
1 2
1 3
2 3
2 4
2 5
5 3
5 4
3 4

输出样例2:

0

#include<stdio.h>
#include<string.h>
int Nv,Ne;//只需要判断是否连通和度数就能做了
int pre[1005];//连通集
int degree[1005];//求每个顶点的度数
int find(int x){ //查找老大
    if(pre[x]!=x){
        pre[x] = find(pre[x]);
    }
    return pre[x];
}
void join(int x,int y){ //将两个点连通
    int fx = find(x);
    int fy = find(y);
    if(fx!=fy){
        pre[fx] = fy;
    }
}
int main()
{
    int i;
    int a,b;//两个点
    scanf("%d %d",&Nv,&Ne);
    for(i=0;i<Nv;i++){//初始化两个数组
        pre[i] = i;
        degree[i] = 0;
    }
    for(i=0;i<Ne;i++){
        scanf("%d %d",&a,&b);
        a--;b--;
        join(a,b);
        degree[a]++;
        degree[b]++;
    }
    int count=0;
    for(i=0;i<Nv;i++){
        if(pre[i]!=find(i)){
            count++;
        }
    }
    if(count==1){
        for(i=0;i<Nv;i++){
            if(degree[i]%2!=0){
                printf("0\n");
                return 0;
            }
        }
        printf("1\n");
    }else{
        printf("0\n");
    }

    return 0;
} 
 

原文地址:https://www.cnblogs.com/wysAC666/p/9689847.html

时间: 2024-12-31 03:39:32

7-1 哥尼斯堡的“七桥问题” (25 分)的相关文章

5-32 哥尼斯堡的“七桥问题” (25分)

题目描述: 哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示. 可否走过这样的七座桥,而且每桥只走过一次?瑞士数学家欧拉(Leonhard Euler,1707-1783)最终解决了这个问题,并由此创立了拓扑学. 这个问题如今可以描述为判断欧拉回路是否存在的问题.欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路.现给定一个无向图,问是否存在欧拉回路? 输入格式: 输入第一行给出两个正整数,分别是节点数NN (1\le N\le 1000

欧拉七桥问题的一种证明(原创)

这是从网上下载的一张图片. 分析: 1定义:首先出度与入度之和为奇数的点叫为奇点. 2定理:一个点的|入度-出度|≤1,当该点为奇点时取等号.且对于某点而言, 若入度-出度=1,则该点必然终点: 若入度-出度=-1,则该点必然为起点 证明:同一个人不可能从同一个地方连续出去两次,也不可能从另外一个地方连续进入某个地方两次. 所以对于一个点而言,出度和入度必须交替进行,所以|入度-出度|≤1,该点为奇点时取等号. 倘若入度-出度=1,则行走过程必然为入-出-入-出-...-入.最后一步是入,入完过

鸟哥私房菜第七章 Linux文件与目录管理

一.目录与路径 1.相对路径与绝对路径 2.目录的相关操作 以下为特殊目录: .        :代表此目录 ..       :代表上一层目录 -        :代表前一个工作目录 ~       :代表"目前用户身份"所在的主文件夹 ~account :代表account这个用户的主文件夹 注:根目录下上一层(..)与前(.)是同一个目录. (1)cd:切换目录(change directory) 语法: [[email protected] ~]# cd [相对路径或绝对路径]

软件课设第七天 8.25

今日完成的任务: 1.研究GMM(高斯混合模型)的运动模型检测算法: 2.研究KCF(滤波器)的运动目标跟踪算法: 3.初步熟悉了OpenCV. 明天的目标: 1.尝试根据算法流程图开始编写算法: 2.继续研究相关算法和软件. 每日小结: 今天稍微休息调整了一下,并没有做太多的工作,只是继续研究了两个相关算法.明天我准备和小组的其他组员一起尝试编写本项目的算法,由于本项目是用Python语言,所以刚开始写程序可能会有些困难,所以就边写边学吧. 原文地址:https://www.cnblogs.c

PTA数据结构与算法题目集(中文) 7-32

PTA数据结构与算法题目集(中文)  7-32 7-32 哥尼斯堡的“七桥问题” (25 分) 哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示. 可否走过这样的七座桥,而且每桥只走过一次?瑞士数学家欧拉(Leonhard Euler,1707—1783)最终解决了这个问题,并由此创立了拓扑学. 这个问题如今可以描述为判断欧拉回路是否存在的问题.欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路.现给定一个无向图,问是否存在欧拉回路? 输

UVA10129:Play on Words(欧拉回路)

Some of the secret doors contain a very interesting word puzzle. The team of archaeologists has to solve it to open that doors. Because there is no other way to open the doors, the puzzle is very important for us. 一些密门会包含有趣的文字谜,考古学家小队为了开门不得不解决它.别无他法,

《程序员的数学》

今天是星期日,10100天后是星期几? 我们不急于求出10100,而是像1,10,100,1000....这样,依次增加0的个数,观察其规律. 0的个数0                              1/7=0余1                                                                 →星期一1                             10/7=1余3                            

什么是TOPO学

拓扑,一个跟门萨同样古怪的“科技Word”.其定义,对绝大多数读者而言,不一定需要理解,但无妨知道———拓扑学,数学的一门分科,研究几何图形在一对一的双方连续变换下不变的性质.不少门萨题,来自拓扑学,其典例,是2005年10月8日刊发在<晚会·游戏>版上的那篇<四种颜色与地图>.此例在拓扑学中大名鼎鼎,叫做“四色问题”.拓扑理论用途广泛,涉及空间规划.网络设计.通讯邮递乃至心理分析等诸多领域,人们不大了解罢了.说来趣怪,致使这门学科得以诞生的契机却是一款很是独特的消闲.话说俄罗斯有

欧拉回路基本概念及定理

转 http://www.cnblogs.com/luyingfeng/p/3877338.html 1. 欧拉通路.欧拉回路.欧拉图无向图:1) 设G是连通无向图,则称经过G的每条边一次并且仅一次的路径为欧拉通路:2) 如果欧拉通路是回路(起点和终点是同一个顶点),则称此回路为欧拉回路(Euler circuit):3) 具有欧拉回路的无向图G称为欧拉图(Euler graph).有向图:1) 设D是有向图,D的基图连通,则称经过D的每条边一次并且仅一次的有向路径为有向欧拉通路:2) 如果有向