• 计蒜客 16876 韩梅梅的抽象画


    题目链接https://nanti.jisuanke.com/t/16876

    题目大意:给出一个简单无向图,无重边无自环。问它是否满足:包含且只包含一个环,并且每个环的节点是一颗有根树的根。

    解题思路:连通+n==m即可。恩就是这样。

    代码:

     1 const int maxn = 1e5 + 5;
     2 const int maxm = 1e5 + 5;
     3 struct Edge{
     4     int to, next;
     5 };
     6 Edge edges[maxm];
     7 int tot, head[maxm];
     8 bool vis[maxn];
     9 int n, m;
    10 
    11 void init(){
    12     tot = 0;
    13     memset(vis, 0, sizeof(vis));
    14     memset(head, -1, sizeof(head));
    15 }
    16 void addEdge(int u, int v){
    17     edges[tot].to = v;
    18     edges[tot].next = head[u];
    19     head[u] = tot++;
    20 } 
    21 void dfs_c(int x){
    22     vis[x] = 1;
    23     for(int i = head[x]; i != -1; i = edges[i].next){
    24         int v = edges[i].to;
    25         if(!vis[v]) dfs_c(v);
    26     }
    27 }
    28 bool check(){
    29     dfs_c(1);
    30     for(int i = 1; i <= n; i++) if(!vis[i]) return false;
    31     return true;
    32     memset(vis, 0, sizeof(vis));
    33 }
    34 
    35 void solve(){
    36     if(!check()){
    37         puts("SAD");
    38         return;
    39     }
    40     if(n == m){
    41         puts("HAPPY");
    42     }
    43     else puts("SAD");
    44     return;
    45 }
    46 int main(){
    47     init();
    48     scanf("%d %d", &n, &m);
    49     for(int i = 0; i < m; i++){
    50         int u, v;
    51         scanf("%d %d", &u, &v);
    52         addEdge(u, v);
    53         addEdge(v, u);
    54     }
    55     solve();
    56 }

    题目:

    美术课上,老师让大家画动物,韩梅梅画了一只章鱼,如果老师能认出这是一只章鱼,就会奖励韩梅梅一朵小红花。现在韩梅梅拿着她的画向你求助,她想知道她的画能不能得到一朵小红花。

    美术老师对章鱼的定义如下:

    章鱼有一个圆圆的身体和许多触须。

    为了简化问题,我们将韩梅梅的画抽象成一个含n个顶点,m条边的无向图G。如果G含三个或以上的有根树,且他们的根在同一个简单环上,那么G可以被认作是章鱼。

    题目输入保证没有重边和自环。

    Input:

    第一行输入两个整数:n和m (1 ≤ n ≤ 100, 0 ≤ m ≤ n*(n-1)/2 )。

    接下来的m行,每行有两个整数x和y,表示顶点x与顶点y相连接。(1 ≤ x, y ≤ n, x ≠ y) 。

    Output:

    如果韩梅梅的画能被认作章鱼,输出“HAPPY”,否则输出“SAD”。

    样例输入1

    6 6
    6 3
    6 4
    5 1
    2 5
    1 4
    5 4

    样例输出1

    HAPPY

    样例输入2

    6 5
    5 6
    4 6
    3 1
    5 1
    1 2

    样例输出2

    SAD

    题目来源

    ACM 竞赛高校联盟 练习赛 第六场

  • 相关阅读:
    六月计划#2B(6.10-6.16)
    set
    六月计划#2A(6.10-6.16)
    Codevs_1166_[NOIP2007]_矩阵取数游戏_(动态规划+高精度)
    7月17日刷题记录 分治Getting!循环比赛日程表
    倍增ST应用 选择客栈(提高组)
    7月16日做题记录 贪心小练~
    三分查找笔记
    倍增笔记ST表
    分治笔记
  • 原文地址:https://www.cnblogs.com/bolderic/p/7470604.html
Copyright © 2020-2023  润新知