zoukankan      html  css  js  c++  java
  • 分数调查(带权并查集)

    时间限制:10000ms
    单点时限:1000ms
    内存限制:256MB

    描述

    小Hi的学校总共有N名学生,编号1-N。学校刚刚进行了一场全校的古诗文水平测验。  

    学校没有公布测验的成绩,所以小Hi只能得到一些小道消息,例如X号同学的分数比Y号同学的分数高S分。  

    小Hi想知道利用这些消息,能不能判断出某两位同学之间的分数高低?

    输入

    第一行包含三个整数N, M和Q。N表示学生总数,M表示小Hi知道消息的总数,Q表示小Hi想询问的数量。  

    以下M行每行三个整数,X, Y和S。表示X号同学的分数比Y号同学的分数高S分。  

    以下Q行每行两个整数,X和Y。表示小Hi想知道X号同学的分数比Y号同学的分数高几分。  

    对于50%的数据,1 <= N, M, Q <= 1000  

    对于100%的数据,1 <= N, M, Q<= 100000 1 <= X, Y <= N -1000 <= S <= 1000

    数据保证没有矛盾。

    输出

    对于每个询问,如果不能判断出X比Y高几分输出-1。否则输出X比Y高的分数。

    样例输入
    10 5 3  
    1 2 10  
    2 3 10  
    4 5 -10  
    5 6 -10  
    2 5 10  
    1 10  
    1 5  
    3 5
    样例输出
    -1  
    20  
    0
    /*
        见了鬼了,开始没看到q,竟然想跑最短路
        看到q,发现没法跑最短路,就写了并查集
    维护每个点到父亲的权值就好了,简单题
    
    */
    
    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=1e5+5;
    int v[maxn],f[maxn];
    int n,m,q;
    
    int finds(int x){
        if(f[x] == x)
            return x;
        int t = f[x];
        f[x] = finds(f[x]);
        v[x] += v[t];
        return f[x];
    }
    
    void uion(int a,int b,int c){
        int fa = finds(a);
        int fb = finds(b);
        if(fa == fb)return ;
        f[fb] = fa;
        v[fb] = v[a] + c - v[b];
    }
    
    int main(){
        scanf("%d%d%d",&n,&m,&q);
        for(int i=1;i<=n;i++)f[i]=i;
        int a,b,c;
        for(int i = 1; i <= m ; i ++){
            scanf("%d%d%d",&a,&b,&c);
            uion(a,b,c);
        }
    
        for(int i=0;i<q;i++){
            scanf("%d%d",&a,&b);
            int fa=finds(a);
            int fb=finds(b);
            if(fa==fb)printf("%d
    ",v[b]-v[a]);
            else puts("-1");
        }
        return 0;
    }
    

      

  • 相关阅读:
    [Todo]很不错的Java面试题类型整理,要看
    [Todo] Java并发编程学习
    自建一个Java Spring MVC项目
    [Todo] 乐观悲观锁,自旋互斥锁等等
    [Todo] Redis里面队列的两种模式,以及抢红包在Redis中的实现
    hdu 4704 同余定理+普通快速幂
    [置顶] ubuntu 和 win7 远程登陆 + vnc登陆
    mysql之触发器
    Jsoup API解析HTML中input标签
    IOS UITableView单条刷新,数据不刷新解决方案
  • 原文地址:https://www.cnblogs.com/jihe/p/6752505.html
Copyright © 2011-2022 走看看