zoukankan      html  css  js  c++  java
  • 一本通1530 Ant Trip

    1530:Ant Trip

    【题目描述】

    原题来自:2009 Multi-University Training Contest 12 - Host by FZU

    给你无向图的 N 个点和 M 条边,保证这 M 条边都不同且不会存在同一点的自环边,现在问你至少要几笔才能所有边都画一遍。(一笔画的时候笔不离开纸)

    【输入】

    多组数据,每组数据用空行隔开。

    对于每组数据,第一行两个整数 N,M 表示点数和边数。接下去 M 行每行两个整数 a,b,表示 a,b 之间有一条边。

    【输出】

    对于每组数据,输出答案。

    【输入样例】

    3 3
    1 2
    2 3
    1 3
    
    4 2
    1 2
    3 4

    【输出样例】

    1
    2

    【提示】

    数据范围与提示:

    1N10^5,0M2×10^5,1a,bN

    统计一张不一定联通的无向图中欧拉路径数量

    sol:用并查集维护联通性,一个联通块中的数量就是其中奇点个数/2,如果没有就是1

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 const int N=100005;
     4 int n,m;
     5 int Deg[N],Jidian[N],Father[N];
     6 bool Used[N];
     7 inline int Get_Father(int x)
     8 {
     9     return (Father[x]==x)?(x):(Father[x]=Get_Father(Father[x]));
    10 }
    11 int main()
    12 {
    13 //    freopen("ant.in","r",stdin);
    14 //    freopen("my.out","w",stdout);
    15     int i;
    16     while(~scanf("%d%d",&n,&m))
    17     {
    18         for(i=1;i<=n;Father[i]=i,Used[i]=Deg[i]=Jidian[i]=0,i++);
    19         for(i=1;i<=m;i++)
    20         {
    21             int x,y;
    22             scanf("%d%d",&x,&y);
    23             Deg[x]++;
    24             Deg[y]++;
    25             int xx=Get_Father(x),yy=Get_Father(y);
    26             if(xx==yy) continue;
    27             Father[xx]=yy;
    28         }
    29         for(i=1;i<=n;i++)
    30         {
    31             Jidian[Father[i]=Get_Father(i)]+=(Deg[i]&1);
    32         }
    33         int ans=0;
    34         for(i=1;i<=n;i++) if(Father[i]==i)
    35         {
    36             if(!Deg[i]) continue;
    37             if(!Jidian[i]) ans++;
    38             else ans+=(Jidian[i]>>1);
    39         }
    40         printf("%d
    ",ans);
    41     }
    42     return 0;
    43 }
    44 /*
    45 input
    46 3 3
    47 1 2
    48 2 3
    49 1 3
    50 4 2
    51 1 2
    52 3 4
    53 output
    54 1
    55 2
    56 */
    View Code
  • 相关阅读:
    3.29Java流程控制语句之循环结构
    3.27Java自动类型转化
    3.27Java流程控制语句
    3.27字符串连接符
    计算机系统概论
    《算法导论》第12章 二叉查找树 (2)查找、插入与删除
    《算法导论》第14章 数据结构的扩张 (1)动态顺序统计
    《算法导论》第12章 二叉查找树 (3)基数树
    关于算法学习的总结和感悟(原创)
    《Windows游戏编程大师技巧》二、Windows编程模型
  • 原文地址:https://www.cnblogs.com/gaojunonly1/p/10348754.html
Copyright © 2011-2022 走看看