zoukankan      html  css  js  c++  java
  • 九度 题目1027:欧拉回路

    题目1027:欧拉回路

    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:1566

    解决:758

    题目描述:
        欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路。现给定一个图,问是否存在欧拉回路?
    输入:
        测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是节点数N ( 1 < N < 1000 )和边数M;随后的M行对应M条边,每行给出一对正整数,分别是该条边直接连通的两个节点的编号(节点从1到N编号)。当N为0时输入结束。
    输出:
        每个测试用例的输出占一行,若欧拉回路存在则输出1,否则输出0。
    样例输入:
    3 3
    1 2
    1 3
    2 3
    3 2
    1 2
    2 3
    0
    样例输出:
    1
    0
    来源:2008年浙江大学计算机及软件工程研究生机试真题

    #include<iostream>
    #include<cstdio>
    #include<stdlib.h>
    #include<malloc.h>
    using namespace std;
    typedef struct node{
       int id;
       struct node *link;      
    }node;

    int d[1003];
    int flag[1003];
    node v[1003];

    void add_edge(int x, int y)//构建无向图的邻接表
    {
        node *p = (node *)malloc(sizeof(node));//new node;
       p->id=x;
       p->link=v[y].link;
       v[y].link=p;
        node *q=(node *)malloc(sizeof(node));//new node;
       q->id=y;
       q->link=v[x].link;
       v[x].link=q;      
    }
    void dfs(int f)
    {
       node *temp;
       flag[f]=1;
       temp=v[f].link;
       while(temp!=NULL)
       {
           if(!flag[temp->id])
            dfs(temp->id);
           temp=temp->link ;               
       }
    }
    int main()
    {
      int n,m,i,a,b,k,count;
     
      while(scanf("%d%d",&n,&m)!=EOF)
      {
        if(n==0)
         break;
         k=1;
         count=0;
        for(i=0; i<=n; i++)
        {
            v[i].id=i;
            v[i].link=NULL; 
            flag[i]=d[i]=0;    
        }
        for(i=0; i<m; i++)
         {
            scanf("%d%d",&a,&b);
            add_edge(a,b);
            d[a]++;
            d[b]++;       
         } 
         dfs(1);
         for(i=1; i<=n; i++)
         {
            if(flag[i]==0)
              k=0;
            if(d[i]&1)
             count++ ;    
         }
         //cout<<k<<count<<endl;
         if(k==1&&count==0) 
            printf("1\n");
         else printf("0\n");                           
      }
      return 0;
    }

  • 相关阅读:
    P5283 [十二省联考2019]异或粽子 可持久化字典树
    P3293 [SCOI2016]美味 最大异或值 主席树
    P4735 最大异或和 可持久化trie树
    P4551 最长异或路径 trie树
    html/css静态网页制作
    在一个div里,列表样式图片进行float,实现水平排序
    css的网页布局用position
    您右下角有份、、、
    登录注册页面和页面跳转
    相对路径 绝对路径
  • 原文地址:https://www.cnblogs.com/hpuwangjunling/p/2998634.html
Copyright © 2011-2022 走看看