zoukankan      html  css  js  c++  java
  • A

    - 题目大意

        有若干个由两种元素组成的简单化合物,现在把它们装进车里,如果车上有恰好有k种简单化合物并且恰好有k种元素的话,那么就会引发爆炸,所以车上的化合物必须避免满足这个条件。

    - 解题思路

       如果元素表示点,那么化合物就表示边,要爆炸的条件就是形成环,即为k个点k条边,那么就肯定存在环。直接用并查集判断就好了。

    - 代码

    #include<iostream>
    #include<cstdio>
    using namespace std;
    const int MAX = 1e5 + 50;
    int fa[MAX];
    void init(int n)
    {
    	for (int i = 0; i <= n; i++)
    		fa[i] = i;
    }
    
    int find(int x)
    {
    	if (x == fa[x])
    		return x;
    	else
    	{
    		return fa[x] = find(fa[x]);
    	}
    }
    
    int main()
    {
    	int x, y;
    	while (scanf("%d", &x) != EOF)
    	{
    		init(MAX);
    		int sum = 0;
    		while (x != -1)
    		{
    			scanf("%d", &y);
    			int fx = find(x), fy = find(y);
    			if (fx == fy)
    				sum++;
    			else
    			{
    				fa[fx] = fy;
    			}
    			scanf("%d", &x);
    		}
    		printf("%d
    ", sum);
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    工商银行在线支付接口
    Runtime-compiler和Runtime-only的区别:
    响应式网站技术精要总结
    ajax基础
    jquery选择器 笔记
    js数组去重的几种方法
    js中的call apply bind
    es6中的类
    bootstrap组件
    es6中的模块化输出
  • 原文地址:https://www.cnblogs.com/alpacadh/p/8449424.html
Copyright © 2011-2022 走看看