zoukankan      html  css  js  c++  java
  • hiho 1515 : 分数调查 简单bfs

    时间限制: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

    开始以为是存在环(矛盾的分数),这样的话,可能要判环。读完题发现没有矛盾存在,这样的话并查集+bfs乱搞

    #include<cstdio>
    #include<cstdlib>
    #include<iostream>
    #include<cstring>
    #include<algorithm>
    #include<string>
    #include<memory>
    using namespace std;
    const int maxn=200010;
    int Laxt[maxn],Next[maxn],To[maxn],V[maxn],cnt=0;
    int fa[maxn],scr[maxn];//fa是分组,score代表相对分数。
    void _add(int u,int v,int s){
        Next[++cnt]=Laxt[u];
        Laxt[u]=cnt;
        To[cnt]=v;
        V[cnt]=s;
    }
    void _dfs(int u){
        for(int i=Laxt[u];i;i=Next[i]){
            if(!fa[To[i]]){
                fa[To[i]]=fa[u];
                scr[To[i]]=scr[u]-V[i];
                _dfs(To[i]);
            }
        }
    }
    int main()
    {
        int n,m,q,i,x,y,s;
         scanf("%d%d%d",&n,&m,&q);
         for(i=1;i<=m;i++){
                scanf("%d%d%d",&x,&y,&s);
                _add(x,y,s);
                _add(y,x,-s);
         }
         for(i=1;i<=n;i++) 
         if(!fa[i]){
                fa[i]=i;
                _dfs(i);
         }
         for(i=1;i<=q;i++){
                scanf("%d%d",&x,&y);
                if(fa[x]!=fa[y]) printf("-1
    ");
                else printf("%d
    ",scr[x]-scr[y]);
         }
         return 0;
    }
    View Code
  • 相关阅读:
    Linux kernel AACRAID Driver Compat IOCTL 本地安全绕过漏洞
    WordPress Contact Form 7插件任意文件上传漏洞
    文件上传
    Po类设计
    MySQL 表设计
    Mybatis——更新DB表的字段时,应该注意的点
    分页——为Mybatis配置PageHelper
    SpringAOP配置与使用(示例)
    日志问题
    为一台全新的电脑构建JavaEE开发环境
  • 原文地址:https://www.cnblogs.com/hua-dong/p/7739717.html
Copyright © 2011-2022 走看看