• LA 3644 X-Plosives


    题意:有一些简单化合物,每种化合物含有两种元素,要将这些化合物装到车上,但是如果车上的化合物中,存在某k个化合物正好包含k种元素,则会爆炸。现在你是装箱工人,每当你拿到一个化合物,你都会检查如果将它装到车上是否会参生爆炸,如果会你就会拒绝将这个化合物装上车。问一共会拒绝装多少个化合物。

    解法:将每种元素视为一个点,每种化合物视为一条边,也就是说,不能存在某k个点,恰巧为一个环。这样的话,就是每次拿到一个化合物检查一下两种元素是否在同一个连通分量里,如果在则不能装箱。这样就是一个裸的并查集了。

    tag:并查集

     1 /*
     2  * Author:  Plumrain
     3  * Created Time:  2013-11-29 14:14
     4  * File Name: DS-LA-3644.cpp
     5  */
     6 #include <iostream>
     7 #include <cstdio>
     8 
     9 using namespace std;
    10 
    11 const int maxn = 100005;
    12 
    13 int f[maxn];
    14 
    15 int find(int x)
    16 {
    17     if (x == f[x]) return x;
    18     return f[x] = find(f[x]);
    19 }
    20 
    21 int main()
    22 {
    23     int a, b;
    24     while (scanf ("%d", &a) != EOF){
    25         for (int i = 0; i < maxn; ++ i)
    26             f[i] = i;
    27         int ans = 0;
    28         while (a >= 0){
    29             scanf ("%d", &b);
    30             int t1 = find(a), t2 = find(b);
    31             if (t1 != t2) f[t1] = t2;
    32             else ++ ans;
    33             scanf ("%d", &a);
    34         }
    35         printf ("%d
    ", ans);
    36     }
    37     return 0;
    38 }
    View Code

                                                                                                                                                                                                                                                         

    ------------------------------------------------------------------
    现在的你,在干什么呢?
    你是不是还记得,你说你想成为岩哥那样的人。
  • 相关阅读:
    爬取动态html网页,requests+execjs
    pycharm2019.2一个奇怪的bugger,执行后输出内容被莫名处理
    博客园啥时候升级了,刚看到
    在浏览器的市场上,IE依然是放弃了,firefox还在继续~~
    jetbrain rider 逐渐完美了,微软要哭了么?
    div层的滑入滑出实例
    关于js的<、>、=、<=、>=的比较
    Jquery实现左右轮播效果
    Html5离线缓存详细讲解
    CANVAS画布与SVG的区别
  • 原文地址:https://www.cnblogs.com/plumrain/p/LA_3644.html
Copyright © 2020-2023  润新知