zoukankan      html  css  js  c++  java
  • pta 习题集5-17 哥尼斯堡的“七桥问题”

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

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

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

    输入格式:

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

    输出格式:

    若欧拉回路存在则输出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 <iostream>
    #include <string.h>
    #include <stdlib.h>
    #include <algorithm>
    #include <math.h>
    #include <stdio.h>
    #include <string>
    
    using namespace std;
    int n,m;
    int v[1005];
    int f[1005];
    int find(int x)
    {
        if(f[x]!=x)
            f[x]=find(f[x]);
        return f[x];
    }
    int main()
    {
        scanf("%d%d",&n,&m);
        int x,y;
        for(int i=1;i<=n;i++)
            f[i]=i;
        for(int i=1;i<=m;i++)
        {
            scanf("%d%d",&x,&y);
            int fx=find(x);
            int fy=find(y);
            if(fx!=fy)
                f[fx]=fy;
            v[x]++;
            v[y]++;
        }
        int root=find(1);
        int ans=1;
        for(int i=2;i<=n;i++)
        {
            if(find(i)!=root)
            {
               ans=0;
                break;
            }
            if(v[i]%2!=0)
            {
                ans=0;
                break;
            }
        }
        if(ans)
            printf("1
    ");
        else
            printf("0
    ");
        return 0;
        
    }
    


  • 相关阅读:
    数字化航电平台 3D 可视化,图扑助力珠海航展国产民机航电平台品牌发布
    20211123
    多叉树操作
    ILjava/lang/String;)Ljava/util/List
    Fiddler使用总结
    java stream map对于 key重复的处理方式,上述代码表示,重复的话,取信值
    java中map里面的key按我们插入进去的顺序输出
    IntelliJ IDEA 中自动去除未使用的引入(Unused import statement)
    加redis锁
    LambdaQueryWrapper 查distinct数据
  • 原文地址:https://www.cnblogs.com/dacc123/p/8228543.html
Copyright © 2011-2022 走看看