[欧拉回路] hdu 3018 Ant Trip

[欧拉回路] hdu 3018 Ant Trip

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

全栈程序员社区此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“全栈程序员社区”或者“www_javaforall_cn”或者微信扫描右侧二维码都可以关注本站微信公众号。

题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=3018

Ant Trip

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1658    Accepted Submission(s): 641




Problem Description
Ant Country consist of N towns.There are M roads connecting the towns.

Ant Tony,together with his friends,wants to go through every part of the country. 

They intend to visit every road , and every road must be visited for exact one time.However,it may be a mission impossible for only one group of people.So they are trying to divide all the people into several groups,and each may start at different town.Now tony wants to know what is the least groups of ants that needs to form to achieve their goal.



[欧拉回路] hdu 3018 Ant Trip
 


Input
Input contains multiple cases.Test cases are separated by several blank lines. Each test case starts with two integer N(1<=N<=100000),M(0<=M<=200000),indicating that there are N towns and M roads in Ant Country.Followed by M lines,each line contains two integers a,b,(1<=a,b<=N) indicating that there is a road connecting town a and town b.No two roads will be the same,and there is no road connecting the same town.
 


Output
For each test case ,output the least groups that needs to form to achieve their goal.
 


Sample Input
   
   
3 3 1 2 2 3 1 3 4 2 1 2 3 4

 


Sample Output
   
   
1 2
Hint
New ~~~ Notice: if there are no road connecting one town ,tony may forget about the town. In sample 1,tony and his friends just form one group,they can start at either town 1,2,or 3. In sample 2,tony and his friends must form two group.

 


Source
 


Recommend
gaojie   |   We have carefully selected several similar problems for you:  
3013 
3015 
3016 
3011 
3010 
 




Statistic | 
Submit | 
Discuss | 
Note

题目意思:

给一幅无向图,求要用多少次一笔画,把全部边走完,边仅仅能走一次。孤立点不算。

解题思路:
dfs把每一个连通块找到,然后统计奇数度数节点个数。

注意孤立节点不算。

代码:

//#include<CSpreadSheet.h>

#include<iostream>
#include<cmath>
#include<cstdio>
#include<sstream>
#include<cstdlib>
#include<string>
#include<string.h>
#include<cstring>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
#include<stack>
#include<list>
#include<queue>
#include<ctime>
#include<bitset>
#include<cmath>
#define eps 1e-6
#define INF 0x3f3f3f3f
#define PI acos(-1.0)
#define ll __int64
#define LL long long
#define lson l,m,(rt<<1)
#define rson m+1,r,(rt<<1)|1
#define M 1000000007
//#pragma comment(linker, "/STACK:1024000000,1024000000")
using namespace std;

#define Maxn 110000
int de[Maxn],n,m;
vector<vector<int> >myv;
int in[Maxn],cnt;
bool vis[Maxn];

void dfs(int cur)
{
    in[++cnt]=cur;
    vis[cur]=true;
    for(int i=0;i<myv[cur].size();i++)
    {
        int ne=myv[cur][i];
        if(vis[ne])
            continue;
        dfs(ne);
    }
}
int main()
{
    //freopen("in.txt","r",stdin);
   //freopen("out.txt","w",stdout);
   while(~scanf("%d%d",&n,&m))
   {
       myv.clear();
       myv.resize(n+10);
       memset(de,0,sizeof(de));

       for(int i=1;i<=m;i++)
       {
           int a,b;
           scanf("%d%d",&a,&b);
           myv[a].push_back(b);
           myv[b].push_back(a);
           de[a]++;
           de[b]++;
       }
       memset(vis,false,sizeof(vis));

       int ans=0;

       for(int i=1;i<=n;i++)
       {
           if(!vis[i])
           {
               cnt=0;
               dfs(i);
               int temp=0;
               if(cnt==1)  //孤立节点不算
                    continue;
               for(int j=1;j<=cnt;j++)
               {
                   if(de[in[j]]&1)
                        temp++;
                    //printf("i:%d j")
               }
               if(!temp)
                    ans++;
               else
                    ans+=temp/2;
           }
       }
       printf("%d\n",ans);

   }
    return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117913.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mysql 新特性之geometry

    mysql 新特性之geometry

    2021年11月3日
    190
  • Java基础三:Java 核心技术[通俗易懂]

    Java基础三:Java 核心技术[通俗易懂]目录3.Java核心技术3.1.反射机制3.2.异常3.3.多线程3.4.文件与I\O流3.Java核心技术3.1.反射机制JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。3.1.1.静态编译和动态编译静态编译:在编译时确定类型,绑定对象 动态编译:运行时确定类型,绑定对象3

    2022年7月8日
    25
  • springboot连接多个数据库

    springboot连接多个数据库今天接到一个新的需求,需要把自己数据库某个表的数据迁移到别的数据库中,于是百度,中间出现了一些细节的问题,解决花了点时间,在此记录一下,下次避免出现过的错误这里把连接一个数据库的情况也记录一下,好做对比一、连接一个数据库1.启动类@SpringBootApplication//扫描mapper映射类所在路径@MapperScan(basePackages="com.xh….

    2022年6月25日
    54
  • java oracle分页查询语句_oracle 分页语句

    java oracle分页查询语句_oracle 分页语句通过Debug调试,发现第一页查询到的数据没有问题,第二页时,查不到数据!第一页时,控制台打印的sql语句:SELECTOBJ_NAME,OBJ_ATTRIBUTE_NAME,ATTRIBUTE_TYPE,DES,STS,PRIORITYFROM(SELECTm.*,rownumrow_idFROM(SELECTOBJ_NAME,OBJ_ATTRIBUTE_NAME,ATT…

    2022年5月28日
    35
  • django urls_php通过url传递参数

    django urls_php通过url传递参数前言为什么我们url需要命名呢?url命名的作用是什么?我们先来看一个案例案例我们先在一个Django项目中,创建2个App,前台front和后台cms,然后在各自app下创建urls.py文件

    2022年8月7日
    6
  • oracle错误904解决方法_oracle导出数据库命令

    oracle错误904解决方法_oracle导出数据库命令今天在导数据库遇到了奇怪的问题C:\DocumentsandSettings\noah>expsystem/pd0000@orclfile=d:\data.dmpwner=devlog=d:\log.log.即将导出DEV的表通过常规路径…..正在导出表B_COMMON_BOXEXP-00008:遇到ORACLE错误9…

    2026年2月3日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号