[BZOJ]1202: [HNOI2005]狡猾的商人 带权并查集

来源:互联网 发布:java this super 区别 编辑:程序博客网 时间:2024/06/01 07:31

Description

刁姹接到一个任务,为税务部门调查一位商人的账本,看看账本是不是伪造的。账本上记录了n个月以来的收入情况,其中第i 个月的收入额为Ai(i=1,2,3...n-1,n), 。当 Ai大于0时表示这个月盈利Ai 元,当 Ai小于0时表示这个月亏损Ai 元。所谓一段时间内的总收入,就是这段时间内每个月的收入额的总和。 刁姹的任务是秘密进行的,为了调查商人的账本,她只好跑到商人那里打工。她趁商人不在时去偷看账本,可是她无法将账本偷出来,每次偷看账本时她都只能看某段时间内账本上记录的收入情况,并且她只能记住这段时间内的总收入。 现在,刁姹总共偷看了m次账本,当然也就记住了m段时间内的总收入,你的任务是根据记住的这些信息来判断账本是不是假的。

Input

第一行为一个正整数w,其中w < 100,表示有w组数据,即w个账本,需要你判断。每组数据的第一行为两个正整数n和m,其中n < 100,m < 1000,分别表示对应的账本记录了多少个月的收入情况以及偷看了多少次账本。接下来的m行表示刁姹偷看m次账本后记住的m条信息,每条信息占一行,有三个整数s,t和v,表示从第s个月到第t个月(包含第t个月)的总收入为v,这里假设s总是小于等于t。

Output

包含w行,每行是true或false,其中第i行为true当且仅当第i组数据,即第i个账本不是假的;第i行为false当且仅当第i组数据,即第i个账本是假的。

带权并查集,f[i]可以理解为i到他的祖先这一段的和,每次维护一下,看一下和前面有无冲突就好了。

代码:

#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;int f[105],d[105];//d[i]=sum[findfa(i)]-sum[i]int findfa(int x){    if(f[x]==x) return x;    int oldfa=f[x];    f[x]=findfa(f[x]);    d[x]+=d[oldfa];    return f[x];}bool work(int x,int y,int z){    int fx=findfa(x),fy=findfa(y);    if(fx==fy)    {        if(z==d[y]-d[x]) return true;        return false;    }    else    {        f[fx]=fy;        d[fx]=d[y]-d[x]-z;        return true;    }}int main(){    int T;    scanf("%d",&T);    while(T--)    {        int n,m;        scanf("%d%d",&n,&m);        for(int i=0;i<=n;i++) f[i]=i,d[i]=0;        bool tf,tf1=true;        for(int i=1;i<=m;i++)        {            int x,y,z;            scanf("%d%d%d",&x,&y,&z);            tf=work(x-1,y,z);            if(tf==false) tf1=false;        }        if(tf1==true) printf("true\n");        else printf("false\n");    }}


2 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 怀孕了肚子很痛怎么办 月经来肚子疼的厉害怎么办 孕妇9个月肚子疼怎么办 斗鱼身上长白点怎么办 8个月宝宝肚子疼怎么办 1岁半宝宝肚子痛怎么办 3岁宝宝肚子疼怎么办啊 吃的太辣肚子疼怎么办 2岁半宝宝肚子疼怎么办 2岁宝宝肚子痛哭怎么办 怀孕3个月拉肚子怎么办 一岁宝宝消化不良拉肚子怎么办 后背长好多痘痘怎么办 身上起疹子很痒怎么办 背上长好多痘痘怎么办 月经两三个月不来怎么办 来月经很少是褐色的怎么办 例假一天就没了怎么办 月经来一天就没了怎么办 假体隆胸8年怀孕怎么办 1岁宝宝长湿疹怎么办 2017卓达破产后怎么办 8岁儿童反复发烧怎么办 工商年报报错了怎么办 买房契税票丢了怎么办 合同地址写错了怎么办 货物被海关扣了怎么办 货被海关扣了怎么办 发票领用薄丢了怎么办 开票税率开错了怎么办 开错税率过月了怎么办 公司开不下去了怎么办 想注册一个公司怎么办手续 税率是3%开成5%怎么办 分列后0变没了怎么办 excel中求和得0怎么办 京东账号被黑了怎么办 合同上写错金额怎么办 裤子穿久了发亮怎么办 皮衣穿久了松了怎么办 和老婆做腻了怎么办