codeforces 123 div2

来源:互联网 发布:excel跨工作簿引用数据 编辑:程序博客网 时间:2024/06/08 10:03

前两题做的还算快,可是最后却没有出题了,原因是题目都看不懂,特别是D题,真想骂几句,这神马意思啊

最后由于做的比较快居然还涨rating了, ——!

E题,并查集的带权合并  w[x]表示x到根的权值和在find的时候合并掉

View Code
#include<cstdio>const int maxn  = 100010;const int mod = 1000000007;int w[maxn],p[maxn];int find(int x){    if(x==p[x]) return x;    int z=find(p[x]);    w[x]+=w[p[x]];    w[x]%=mod;    return p[x]=z;}int main(){    int n,i,j,k,v,x;    scanf("%d",&n);    int ans=0;    int num=0;    while(n--)    {        num++;        p[num]=num;        w[num]=0;        scanf("%d",&k);        while(k--)        {            scanf("%d%d",&v,&x);            int f=find(v);//printf("f=%d %d\n",f,w[f]);            p[f]=num;            w[f]=(w[v]+x)%mod;            ans=(ans+w[f])%mod;            if(ans<0) ans+=mod;        }    }    printf("%d\n",ans);}