zoukankan      html  css  js  c++  java
  • hdu 3047 Zjnu Stadium(并查集)

    题意:

    300个座位构成一个圈。

    有N个人要入座。

    共有M个说明 :A B X ,代表B坐在A顺时针方向第X个座位上。如果这个说明和之前的起冲突,则它是无效的。

    问总共有多少个无效的。

    思路:

    并查集的询问方式,,,,

    直接看代码吧!

    代码:

    int n,m;
    int fa[50005];
    int dis[50005];
    
    
    int findFa(int x){
        if(fa[x]==x)
            return fa[x];
        int t=findFa(fa[x]);
        dis[x]+=dis[fa[x]];
        return fa[x]=t;
    }
    
    int main(){
    
        while(scanf("%d%d",&n,&m)!=EOF){
            rep(i,0,n-1){
                fa[i]=i;
                dis[i]=0;
            }
    
            int ans=0;
            while(m--){
                int a,b,x;
                scanf("%d%d%d",&a,&b,&x);
                int faa=findFa(a);
                int fbb=findFa(b);
                if(faa!=fbb){
                    fa[fbb]=faa;
                    dis[fbb]=dis[a]+x-dis[b];
                }else{
                    if((dis[fbb]%300)!=((dis[a]+x-dis[b])%300)){
                        ++ans;
                    }
                }
            }
            printf("%d
    ",ans);
        }
    
        return 0;
    }
  • 相关阅读:
    CentOS6.5配置网络
    php curl 总结
    laravel-5-doctrine-2 教程
    DOS 总结
    Centos如何通过yum安装php7
    sql with 写法
    php 汉字转拼音函数
    MYSQL 升序排序但值为0的排最后
    zookeeper基础知识
    初识redis
  • 原文地址:https://www.cnblogs.com/fish7/p/4318644.html
Copyright © 2011-2022 走看看