数据结构与算法题目集(中文) - 7-32 哥尼斯堡的“七桥问题”(25 分)

简介: 数据结构与算法题目集(中文) - 7-32 哥尼斯堡的“七桥问题”(25 分)

题目链接:点击打开链接


题目大意:略。


解题思路:并查集 + 顶点度数偶数判断。

如果图G中的一个路径包括每个边恰好一次,则该路径称为欧拉路径(Euler path)。

如果一个回路是欧拉路径,则称为欧拉回路(Euler circuit)。

具有欧拉回路的图称为欧拉图(简称E图)。具有欧拉路径但不具有欧拉回路的图称为半欧拉图。


1、无向图存在欧拉回路的充要条件:

一个无向图存在欧拉回路,当且仅当该图所有顶点度数都为偶数,且该图是连通图。

2、有向图存在欧拉回路的充要条件:

一个有向图存在欧拉回路,所有顶点的入度等于出度且该图是连通图。


AC 代码

#include<bits/stdc++.h>
#include<cmath>
#define mem(a,b) memset(a,b,sizeof a);
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
const int maxn=1010;
int n,m;
int pre[maxn], vis[maxn][maxn], deg[maxn];
void init()
{
    for(int i=1;i<=n;i++) pre[i]=i;
    mem(vis,0);
    mem(deg,0);
}
int find(int x)
{
    return pre[x]==x?x:pre[x]=find(pre[x]);
}
int main()
{
    while(~scanf("%d%d",&n,&m))
    {
        init();
        int u,v;
        for(int i=0;i<m;i++)
        {
            scanf("%d%d",&u,&v);
            if(!vis[u][v])
            {
                vis[u][v]=vis[v][u]=1;
                deg[u]++, deg[v]++;
            }
            pre[find(u)]=pre[find(v)]; // 合并为同一个根
        }
        int cnt=0;
        for(int i=1;i<=n;i++)
        {
            if(pre[i]==i) // 统计 root 结点个数
            {
                cnt++;
                if(cnt>1) break;
            }
            if(deg[i]%2!=0) // 必须所有顶点度数都为偶数
            {
                cnt=-1; break;
            }
        }
        puts(cnt==1?"1":"0");
    }
    return 0;
}


目录
相关文章
|
1月前
|
存储 算法 JavaScript
怎么刷算法,leetcode上有哪些经典题目
怎么刷算法,leetcode上有哪些经典题目
16 0
|
1月前
|
算法
【算法】——动态规划题目讲解
【算法】——动态规划题目讲解
|
7月前
|
存储 算法 决策智能
(万字,细细阅读)竞赛算法入门必经算法模型(附带题目链接和模板)(下)
(万字,细细阅读)竞赛算法入门必经算法模型(附带题目链接和模板)(下)
48 0
|
7月前
|
算法 C++ 容器
(万字,细细阅读)竞赛算法入门必经算法模型(附带题目链接和模板)(上)
(万字,细细阅读)竞赛算法入门必经算法模型(附带题目链接和模板)(上)
27 0
|
14天前
|
算法
算法系列--动态规划--背包问题(4)--完全背包拓展题目(上)
算法系列--动态规划--背包问题(4)--完全背包拓展题目(上)
19 0
|
8月前
|
算法 Java
大厂算法题目-单链表删除数字
大厂算法题目-单链表删除数字
大厂算法题目-单链表删除数字
|
4月前
|
算法
class037 二叉树高频题目-下-不含树型dp【算法】
class037 二叉树高频题目-下-不含树型dp【算法】
22 0
class037 二叉树高频题目-下-不含树型dp【算法】
|
4月前
|
算法
class036 二叉树高频题目-上-不含树型dp【算法】
class036 二叉树高频题目-上-不含树型dp【算法】
29 0
|
4月前
|
算法
数据结构字符串匹配KMP算法的详解(题目讲解 简单易懂)
数据结构字符串匹配KMP算法的详解(题目讲解 简单易懂)
33 0
|
6月前
|
机器学习/深度学习 算法 Java
算法宝典2——Java版本(此系列持续更新,这篇文章目前3道)(有题目的跳转链接)(此份宝典包含了二叉树的算法题)
算法宝典2——Java版本(此系列持续更新,这篇文章目前3道)(有题目的跳转链接)(此份宝典包含了二叉树的算法题)