Description

背景
LDN不知道为什么特别喜欢PG,也许是某种原因吧……
有一天,他发明了一个游戏“PG图”。
问题描述

给定一个有向图,每条边都有一个权值。
每次你可以选择一个节点u和一个整数d,把所有以u为终点的边的权值减小d,把所有以u为起点的边的权值加上d。最后要让所有边的权值的最小值为正且尽量大。

***首先吐槽一下这哪是HAOI2015的题目。。。

经过人类智慧可得之,这题关键在环。只要有环,这个环上边的总和是不变的,而其它地方是随便变的。

so,二分答案,所有边减二分值跑SPFA,发现负环即不符合条件。最后答案减1即可。

#include<bits/stdc++.h>
#define ll long long
#define re register
#define il inline
#define fp(i,a,b) for(re int i=a;i<=b;i++)
#define fq(i,a,b) for(re int i=a;i>=b;i--)
using namespace std;
const int N=805;
int h[N],cnt,n,m,vis[N],dis[N],w[N];
struct Edge
{
  int to,next,w;
}e[N<<2];
il void add(re int u,re int v,re int w)
{
  e[++cnt]=(Edge){v,h[u],w};h[u]=cnt;
}
il bool SPFA(re int u)
{
  vis[u]=1;
  for(re int i=h[u];i+1;i=e[i].next)
    {
      re int v=e[i].to;
      if(dis[v]>dis[u]+w[i])
    {
      if(vis[v]) return 1;//弄出负环即可
      dis[v]=dis[u]+w[i];
      if(SPFA(v)) return 1;
    }
    }
  return vis[u]=0;
}
int main()
{
  ios::sync_with_stdio(false);
  while(cin>>n)
    {
      cin>>m;
      memset(h,-1,sizeof(h));cnt=0;
      fp(i,1,m)
    {
      re int u,v,w;cin>>u>>v>>w;
      add(u,v,w);
    }
      re int l=1,r=10005;
      while(l<=r)
    {
      re int mid=l+r>>1,flag=0;
       fp(i,1,m) w[i]=e[i].w-mid;
       fp(i,1,n)
         {
           memset(vis,0,sizeof(vis));memset(dis,63,sizeof(dis));
           if(SPFA(i)) {flag=1;break;}
         }
       if(flag) r=mid-1;
       else l=mid+1;
    }
      if(!r) cout<<"No Solution"<<endl;
      else if(r==10005) cout<<"Infinite"<<endl;
      else cout<<r<<endl;
    }
  return 0;
}

CJOJ1857 -PG图的更多相关文章

  1. Ceph 存储集群1-配置:硬盘和文件系统、配置 Ceph、网络选项、认证选项和监控器选项

    所有 Ceph 部署都始于 Ceph 存储集群.基于 RADOS 的 Ceph 对象存储集群包括两类守护进程: 1.对象存储守护进程( OSD )把存储节点上的数据存储为对象: 2.Ceph 监视器( ...

  2. 利用火焰图分析ceph pg分布

    前言 性能优化大神Brendan Gregg发明了火焰图来定位性能问题,通过图表就可以发现问题出在哪里,通过svg矢量图来查看性能卡在哪个点,哪个操作占用的资源最多 在查看了原始数据后,这个分析的原理 ...

  3. PG 中 JSON 字段的应用

    13 年发现 pg 有了 json 类型,便从 oracle 转 pg,几年下来也算比较熟稔了,总结几个有益的实践. 用途一:存储设计时无法预料的文档性的数据.比如,通常可以在人员表准备一个 json ...

  4. 自制jQuery焦点图切换简易插件

    首页经常是需要一个焦点图切换的效果,最近做的项目也正好需要,所以在网上搜索,后面查到了一个半成品的插件,这里我自己修改了一下. js文件夹下面有两个文件夹jquery.jslide.js与jquery ...

  5. 正态QQ图的原理

    code{white-space: pre;} pre:not([class]) { background-color: white; }if (window.hljs && docu ...

  6. BZOJ-1070 修车 最小费用最大流+拆点+略坑建图

    1070: [SCOI2007]修车 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 3624 Solved: 1452 [Submit][Status] ...

  7. pgbouncer+pg(fdw)+pg(datanode)分表方案

    pgbouncer+pg(fdw)+pg(datanode)分表方案 (环境RHEL6.5,PG9.4.5,pgbouncer1.5.4,libevent2.0.22) 方案架构图如下: pgboun ...

  8. BIP_开发案例08_BI Publisher图表示例 饼状图/直方图/折线图(案例)

    2014-12-25 Created By BaoXinjian

  9. 【js类库Raphaël】基于svg中的path画40%表示的环型图

     一.可供参考的文档资料. raphaeljs官网:http://raphaeljs.com/ w3c关于path的介绍:http://www.w3.org/TR/2003/REC-SVG11-200 ...

随机推荐

  1. 关于vuex的理解

    刚开始学vue的时候,看到很多项目都有用vuex,抱着一种好奇的心态去看下vuex的官方文档,如下: Vuex官方文档 Vuex 是什么?Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 ...

  2. Idea+maven+testng+reportng生成测试报告

    TestNG自带的测试报告不是很好用,所以一般结合reportng生成美观的测试报告. 首先,在pom.xml中添加testng和reportng相关依赖 <dependencies> & ...

  3. 编写函数,第一个参数指定今天是星期几(1 ~ 7),第二个参数指定天数n,返回n天后是星期几

    def week(today, n): s = n % 7 + today return "n天后是星期:{}".format(s) print(week(1, 3))

  4. outflow Boundary Condition in FLuent

    assumption: flow is imcompressible, fully developed, $\partial \phi / \partial X =0$, where is X is ...

  5. MySQL Connector/Python 接口 (一)

    这里仅介绍 MySQL 官方开发的 Python 接口,参见这里: https://dev.mysql.com/doc/connector-python/en/ Chapter 1 Introduct ...

  6. ISO7220M芯片调试总结

    3.3V或者5V供电        速度可以达到150Mbps      有25年的寿命 调试问题总结: 在调试中发现,芯片焊接的时候很容易损坏,甚至350度焊接,时间在5s的时间都会坏掉.当坏掉的时 ...

  7. Spring 工厂方法创建Bean 学习(三)

    1, 静态工厂方法创建Bean 调用静态工厂方法创建 Bean是将对象创建的过程封装到静态方法中. 当客户端需要对象时, 只需要简单地调用静态方法, 而不同关心创建对象的细节. 要声明通过静态方法创建 ...

  8. 自己写一个HashMap

    package cn.aresoft; /** * HashMap原理 * * @author develp * HashMap是一种以键值对存储数据的数据结构,简单的来说是这样.内部怎么实现的呢?实 ...

  9. 1874 Bellman-ford算法 队列优化过的 用于稀疏图,有负权的图

    #include<stdio.h> #include<algorithm> #include<iostream> #include<queue> usi ...

  10. NYOJ2 括号配对问题

    括号配对问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 现在,有一行括号序列,请你检查这行括号是否配对.   输入 第一行输入一个数N(0<N<=1 ...