狡猾的商人(多么社会的题目名),听周*涛说是水题

看了一眼题目,确让过眼神,我遇上对的题,这题是一道用差分约束系统来判断是否存在环的情况

P3385[模板]负环:我不要面子的???

题目所给条件是a时间到b时间之内赚的钱数

a-b==c

所以建立关系

b->a的权值为c

a->b的权值为-c

因为可能出现负环也可能出现正环

再跑spfa判断是否成环

这题找最长路找最短路都可以,因为这无关紧要,只需要判断是否存在环

拙劣の代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn=10000;
struct lk
{
  int up;
  int zd;
  int vis;
}w[maxn*2];
int h[maxn],top,bj[maxn],n,ans[maxn],bns[maxn],flag;
void pop(int next,int end,int viss)
{
  w[++top].up=h[next];
  w[top].zd=end;
  w[top].vis=viss;
  h[next]=top;
}
queue<int>mp;
void spfa(int l)
{
  memset(bj,0,sizeof(bj));
  memset(ans,-127,sizeof(ans));
  ans[l]=0;
  bj[l]=1;
  mp.push(l);
  while(!mp.empty())
  {
    //cout<<"1"<<endl;
    int x=mp.front();
    bj[x]=0;
    mp.pop();
    for(int i=h[x];i!=0;i=w[i].up)
    {
      int v=w[i].zd;
      if(ans[x]+w[i].vis>ans[v])
      {
        ans[v]=ans[x]+w[i].vis;
        bns[v]=bns[x]+1;
        if(bns[v]>n)
        {
          flag=1;
          return ;
        }
        if(bj[v]==0)
        {
          bj[v]=1;
          mp.push(v);
        }
      }
     }
    }
}
int main()
{
  int m,k,a,b,viss;
  cin>>k;
  while(k)
  {
    top=0;
    flag=0;
    memset(h,0,sizeof(h));
    memset(bns,0,sizeof(bns));
    k--;
    cin>>n>>m;
    for(int i=1;i<=m;i++)
    {
      cin>>a>>b>>viss;
      pop(a-1,b,-viss);
      pop(b,a-1,viss);
    }
    for(int i=1;i<=n;i++)//保证所有点联通而走一遍代替虚拟节点
    {
      if(!bns[i])
      spfa(i);
      if(flag==1)
      break;
    }
    if(flag==1)
    cout<<"false"<<endl;
    else
    cout<<"true"<<endl;
   }
return 0;
}

这里应该可以也做一个虚拟节点将所有的点链接起来,权值为0

转载于:https://www.cnblogs.com/qyh2003/p/9102051.html

5.29 狡猾的商人(把后天的写了,老师不会打我吧)相关推荐

  1. 1202: [HNOI2005]狡猾的商人

    1202: [HNOI2005]狡猾的商人 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1554  Solved: 745 [Submit][St ...

  2. BZOJ1202 [HNOI2005]狡猾的商人 【并查集】

    1202: [HNOI2005]狡猾的商人 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 4180  Solved: 2015 [Submit][S ...

  3. bzoj1202[HNOI2005]狡猾的商人

    bzoj1202[HNOI2005]狡猾的商人 题意: 账本上记录了n个月以来的收入情况,其中第i 个月的收入额为Ai .所谓一段时间内的总收入,就是这段时间内每个月的收入额的总和.给出m段时间内的总 ...

  4. P2294 [HNOI2005]狡猾的商人

    P2294 [HNOI2005]狡猾的商人 题意: 你需要调查某个商人的账本,给你n个月内,m条账单信息,每条账单信息为x到y月的收入或者支出多少钱,问你根据账单信息判断这个账本是否合理 5 3 1 ...

  5. bzoj 1202: [HNOI2005]狡猾的商人(带权并查集)

    1202: [HNOI2005]狡猾的商人 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 3616  Solved: 1740 [Submit][S ...

  6. 洛谷 P2294 [HNOI2005]狡猾的商人

    洛谷 P2294 [HNOI2005]狡猾的商人 题目: 有图·.转链接 题解: 差分约束. 虽然题目中没有出现不等式,但还是属于差分约束的范畴之内的. 一开始我就按照它的要求u到v加权值w的边.但发 ...

  7. [HNOI2005]狡猾的商人

    [HNOI2005]狡猾的商人 Time Limit: 10 Sec Memory Limit: 162 MB Description 刁姹接到一个任务,为税务部门调查一位商人的账本,看看账本是不是伪 ...

  8. HNOI2005 狡猾的商人

    目录 前言 关于建图 关于建图的基本规律 关于跑图 如何判定是否有解 是跑最长路还是最短路 前言 差分约束:通过建图来判断一组(或多组)式子是否可以同时成立尽管在NOIP中并不是经常考到,但我觉得它建 ...

  9. [HNOI2005]狡猾的商人(差分约束)

    P2294 [HNOI2005]狡猾的商人 (来自Luogu) 题目概述 数据规模: w,n,m <= 100 思路: 这个题的难点在于不好想到差分,转化:a-b=k是a-b>=k& ...

  10. bzoj1202 狡猾的商人[并查集]

    1202: [HNOI2005]狡猾的商人 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2932 Solved: 1382 [Submit][Sta ...

最新文章

  1. c类事业编计算机岗面试题,事业单位综合应用C类:让人头疼的摘要题到底怎么写?...
  2. Android开发之CoordinatorLayout使用详解一
  3. Mediasoup简介及其基本概念
  4. iis mysql版本切换_MySQL+PHP配置 Windows系统IIS版(转)
  5. bootstrap拖动div_JS组件系列——Bootstrap Table 表格行拖拽(二:多行拖拽)
  6. python基础19 -------面向对象终结篇(介绍python对象中各种内置命令)
  7. Oracle 去掉重复字符串
  8. 单位工作制度牌展示_员工工号牌管理制度
  9. “鲁班”画海报、“小蜜”当客服,“菜鸟”管物流……,双十一阿里黑科技知多少...
  10. 小步大步算法,循环(Transform,玲珑杯 Round#5 F lonlife 1061)
  11. 营销科学学会2021年年会揭晓玫琳凯博士论文奖得主
  12. Python处理图片九宫格,炫酷朋友圈
  13. 纵横网络靶场社区 工控
  14. 量化系统工程师需要学什么?
  15. gpu云服务器运行游戏_GPU云服务器可以挂在大型游戏吗
  16. 小记Android Gradle插件 Iven 记于 20190522 药厂
  17. c语言-求两个数的最小公倍数
  18. 基于蛋白-配体复合物药效团药物设计(Pharmacophore)
  19. 使用element-tiptap富文本编辑器报错Cannot read property ‘lang‘ of undefined
  20. 嘿嘿,我发现了百度网盘秒传的秘密 !!

热门文章

  1. Spark深入浅出企业级最佳实践
  2. 执行计划之CONCATENATION
  3. ZooKeeper的安装、配置、启动和使用(一)——单机模式
  4. 如何使用Java代码获取Android移动终端Mac地址
  5. 数据库中数据数据初始化的好处
  6. C#基础知识之读取xlsx文件Excel2007
  7. VirtualBox 扩展win7虚拟硬盘容量
  8. 08. 旋转数组的最小数字(C++版本)
  9. 用c语言编写成绩单由高到低,C语言程序设计实验.doc
  10. linux进程间命名管道,Linux进程间通信