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\n",ans);
    }

    return 0;
}
时间: 2024-10-12 17:56:51

hdu 3047 Zjnu Stadium(并查集)的相关文章

hdu 3047 Zjnu Stadium 并查集高级应用

Zjnu Stadium Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1631    Accepted Submission(s): 616 Problem Description In 12th Zhejiang College Students Games 2007, there was a new stadium built

HDU 3047 Zjnu Stadium 带权并查集

题目来源:HDU 3047 Zjnu Stadium 题意:给你一些人 然后每次输入a b c 表示b在距离a的右边c处 求有多少个矛盾的情况 思路:用sum[a] 代表a点距离根的距离 每次合并时如果根一样 判断sum数组是否符合情况 根不一样 合并两棵树 这里就是带权并查集的精髓 sum[y] = sum[a]-sum[b]+x 这里y的没有合并前b的根 #include <cstdio> #include <cstring> using namespace std; cons

【带权并查集】HDU 3047 Zjnu Stadium

http://acm.hdu.edu.cn/showproblem.php?pid=3047 [题意] http://blog.csdn.net/hj1107402232/article/details/9921311 [Accepted] 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<string> 5 #include<cmath> 6 #incl

HDU 3047 Zjnu Stadium(带权并查集,难想到)

M - Zjnu Stadium Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Description In 12th Zhejiang College Students Games 2007, there was a new stadium built in Zhejiang Normal University. It was a modern stadium

hdu 3047 Zjnu Stadium

Zjnu Stadium Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2109    Accepted Submission(s): 808 Problem Description In 12th Zhejiang College Students Games 2007, there was a new stadium built

hdu 3047 Zjnu Stadium【带权并查集】

In 12th Zhejiang College Students Games 2007, there was a new stadium built in Zhejiang Normal University. It was a modern stadium which could hold thousands of people. The audience Seats made a circle. The total number of columns were 300 numbered 1

hdu 3234 Exclusive-OR (并查集+异或性质)

Exclusive-OR Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2177    Accepted Submission(s): 603 Problem Description You are not given n non-negative integers X0, X1, ..., Xn-1 less than 220 ,

HDU 4496 D-City (并查集)

题意:给你n个点m条边,问删除前i条边后有多少个连通分块. 思路:从后往前操作,从后往前添加i条边等于添加完m条边后删掉前m-i条边,可知刚开始没有边,所以sum[m]=n; #include <stdio.h> #include <iostream> #include <algorithm> #include <string.h> #include <queue> #include <math.h> #define M 100010

hdu 1811Rank of Tetris (并查集 + 拓扑排序)

1 /* 2 题意:这些信息可能有三种情况,分别是"A > B","A = B","A < B",分别表示A的Rating高于B,等于B,小于B. 3 4 现在Lele并不是让你来帮他制作这个高手榜,他只是想知道,根据这些信息是否能够确定出这个高手榜,是的话就输出"OK". 5 否则就请你判断出错的原因,到底是因为信息不完全(输出"UNCERTAIN"),还是因为这些信息中包含冲突(输出&quo