zoukankan      html  css  js  c++  java
  • uva 1160 XPlosives

    /*
    题意:往仓库里放炸药,把关键引爆炸药的数对拿出并计数
    数学模型:输入数对,判断是否成环eg(1,2  2,3  3,4,  1,4)这个时候要计数。
    该题中让人费解反复的的是n种材料是不是都出现才会引爆?不是
    eg(1,2 2,4 1,4)也要累加计数。
    核心算法:并查集、判环 前面的数和当前的这个数只要都是一个根节点时就判为环 否则归并
    为一个集合一个根节点-1止。
    输入时候注意:循环输入EOF,开始时用了while(1)超时了没有节制注意一下
    Root :: AOAPC I: Beginning Algorithm Contests -- Training Guide (Rujia Liu)
    :: Chapter 3. Data Structures :: Fundamental Data Structures :: Examples        
    */
    //AC不容易
    #include<stdio.h>
    #include<string.h>
    const int M=100010;//100000+10;
    int ct;
    int fa[M];
    void inist()
    {
        int i;
        for(i=0;i<M;i++)
        fa[i+1]=i+1;
    }
    int find(int x)//查根节点
    {
        while(fa[x]!=x)
        x=fa[x];
        return x ;
        //else return x;
    }
    void Union(int a,int b)//并查集
    {
        int i,j,k;
        int f1,f2;
        f1=find(a);
        f2=find(b);
        if(f1!=f2)
        {
            fa[f1]=fa[f2];
        }
        else ct++;
    }
    int main()
    {
        int a,b;
        while(scanf("%d",&a)!=EOF)//此处必须EOF的方式处理
        //不然就会判定为超时!!!
        {
            ct=0;
            inist();//初始化所有根节点
            while(a!=-1)
            {
                scanf("%d",&b);//if(a==-1)break;
                Union(a,b);//并查集
                scanf("%d",&a);
            }
            printf("%d\n",ct);
            }
        return 0;
    }
    /*
    int main()
    {
        int a,b;
        while(1)
        {
            ct=0;
            inist();//初始化根节点
            while(1)//超时!!!!
            {

                scanf("%d",&a);
                if(a==-1)break;
                scanf("%d",&b);
                Union(a,b);
            }
            printf("%d\n",ct);

        }
        return 0;
    }//*/

  • 相关阅读:
    实现FTP断点续传
    系统软件自动部署实现方案
    QT实现多语言切换
    QTreeWidget实现动态加载本地文件系统
    QuaZip实现多文件打包
    FileZilla命令行实现文件上传以及CreateProcess实现静默调用
    ctkPlugin插件系统实现项目插件式开发
    Windows与Linux下文件操作监控的实现
    QT皮肤系统的动态切换
    OpenGL 学习
  • 原文地址:https://www.cnblogs.com/someonelikeyou/p/2916902.html
Copyright © 2011-2022 走看看