zoukankan      html  css  js  c++  java
  • CodeForces 445B

    题意

    DZY做化学实验, 有n种试剂, 其中m对能够发生化学反应, 试管初始危险系数为1, 当放入一种试剂与试管中已有试剂能够发生反应, 则危险系数*2, 求最大的危险系数

    思路

    并查集
    将所有能发生化学反应的试剂放在一个集合里, 一个集合中的试剂按照一定顺序加入就一定可以保证每次加入都发生反应。最大危险系数 = 2^(n-集合数量)

    AC代码

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <cmath>
    #include <map>
    using namespace std;
    const int maxn = 50+5;
    int f[maxn];
    map<int, int> mp;
    typedef long long ll;
    
    int _find(int a){
        if( a != f[a] )
            f[a] = _find(f[a]);
        return f[a];
    }
    
    void _union( int a, int b ){
        int aa = _find(a);
        int bb = _find(b);
        if( aa != bb )
            f[bb] = aa;
        return;
    }
    
    int main()
    {
        int n, m, a, b;
        scanf("%d%d", &n, &m);
        for( int i = 1; i <= n; i++ )
            f[i] = i;
        while(m--){
            scanf("%d%d",&a, &b);
            _union(a, b);
        }
        int all = 0;
        for( int i = 1; i <= n; i++ )
            if(f[i]==i)
                 all++;
        ll sum = 1;
        printf("%lld
    ",sum<<(n-all));
        return 0;
    }
    
  • 相关阅读:
    1:4 UI标签和通用标签
    1:3访问 servlet API 的两种方式(request,session等内置对象)
    1 :2 Strust2—Demo
    1:1 Struts2概述
    mysql索引原理与慢查询优化1
    mysql流程控制
    mysql函数
    mysql存储过程
    mysql事务
    mysql触发器
  • 原文地址:https://www.cnblogs.com/JinxiSui/p/9740543.html
Copyright © 2011-2022 走看看