题意:

给定一个有向图,每条边都有一个权值,每次你可以选择一个结点和一个整数的,把所有以v为终点的边的权值减去d,

把所有以v为起点的边的权值加上d

最后要让所有边的权的最小值非负且尽量大

代码
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<queue>
using namespace std;
const int N = 1e3;
const int inf = 0x3f3f3f3f;
int dist[N],inq[N],cnt[N];
struct node
{
int v,w;
node(int v,int w):v(v),w(w) {};
};
vector<node> G[N];
void init(int n)
{
for(int i = 0; i<=n; i++) G[i].clear();
}
bool spfa(int n)
{
queue<int> q;
q.push(0);
memset(inq,0,sizeof(inq));
memset(cnt,0,sizeof(cnt));
memset(dist,inf,sizeof(dist));
dist[0] = 0;
inq[0] = 1;
cnt[0] = 1;
while(!q.empty())
{
int u = q.front();
q.pop();
inq[u] = 0;
for(int i = 0; i<G[u].size(); i++)
{
int v = G[u][i].v, w= G[u][i].w;
if(dist[v]>dist[u] + w)
{
dist[v] = dist[u] + w;
if(!inq[v]) q.push(v),inq[v] = 1;
if(++cnt[v]>n) return true;
}
}
}
return false;
}
bool test(int mid,int n)
{
for(int i = 1; i<=n; i++)
for(int j = 0; j<G[i].size(); j++)
G[i][j].w -=mid;
int ret = spfa(n);
for(int i = 1; i<=n; i++)
for(int j = 0; j<G[i].size(); j++)
G[i][j].w +=mid;
return ret;
}
int main()
{
int V,E;
while(~scanf("%d%d",&V,&E))
{
init(V);
int ub = 0;
int u ,v ,w;
for(int i = 0; i<E; i++)
{
scanf("%d%d%d",&u,&v,&w);
G[u].push_back(node(v,w));
ub = max(w,ub);
}
for(int i = 1; i<=V; i++)
G[0].push_back(node(i,0));
int L = 1, R = ub;
if(test(L,V)) puts("No Solution");
else if(!test(ub+1,V)) puts("Infinite");
else
{
while(L<R)
{
int mid = L + (R -L)/2;
if(test(mid,V)) R = mid ;
else L = mid + 1;
}
printf("%d\n",L-1);
}
}
return 0;
}

UVA 11478(差分约束 + 二分)的更多相关文章

  1. Halum UVA - 11478 差分约束

    输入输出格式 输入格式: 输出格式: 输入输出样例 输入样例#1: 复制 2 1 1 2 10 2 1 1 2 -10 3 3 1 2 4 2 3 2 3 1 5 4 5 2 3 4 4 2 5 3 ...

  2. UVA - 11478 - Halum(二分+差分约束系统)

    Problem  UVA - 11478 - Halum Time Limit: 3000 mSec Problem Description You are given a directed grap ...

  3. POJ 1364 King (UVA 515) 差分约束

    http://poj.org/problem?id=1364 http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemi ...

  4. hdu1529 Cashier Employment[差分约束+二分答案]

    这题是一个类似于区间选点,但是有一些不等式有三个未知量参与的情况. 依题意,套路性的,将小时数向右平移1个单位后,设$f_i$为前$i$小时工作的人数最少是多少,$f_{24}$即为所求.设$c_i$ ...

  5. UVA 515 差分约束 SPFA判负

    第一次看这个题目,完全不知道怎么做,看起来又像是可以建个图进行搜索,但题目条件就给了你几个不等式,这是怎么个做法...之后google了下才知道还有个差分约束这样的东西,能够把不等式化成图,要求某个点 ...

  6. Halum UVA - 11478(差分约束 + 二分最小值最大化)

    题意: 给定一个有向图,每条边都有一个权值,每次你可以选择一个结点v和一个整数d,把所有以v为终点的边的权值减小d,把所有以v为起点的边的权值增加d,最后要让所有边权的最小值非负且尽量大 两个特判 1 ...

  7. poj 1275 Cashier Employment - 差分约束 - 二分答案

    A supermarket in Tehran is open 24 hours a day every day and needs a number of cashiers to fit its n ...

  8. 训练指南 UVA - 11478(最短路BellmanFord+ 二分+ 差分约束)

    layout: post title: 训练指南 UVA - 11478(最短路BellmanFord+ 二分+ 差分约束) author: "luowentaoaa" catal ...

  9. UVA 11478 Halum(用bellman-ford解差分约束)

    对于一个有向带权图,进行一种操作(v,d),对以点v为终点的边的权值-d,对以点v为起点的边的权值+d.现在给出一个有向带权图,为能否经过一系列的(v,d)操作使图上的每一条边的权值为正,若能,求最小 ...

随机推荐

  1. spring-mybatis整合项目 异常处理

    java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorIm ...

  2. Maven - 配置镜像仓库

    默认仓库的配置(全球中央仓库): 可以打开maven的安装目录/conf/settings.xml文件,配置镜像,找到如下一段配置,这里默认没有配置任何镜像,但是有一个被注释的配置范例: id: 镜像 ...

  3. ubuntu built-in display 产生的一个原因

    在没有禁用开源的显卡驱动 nouveau 下,从 apt 安装了nvidia的驱动,导致了后面开机后,系统不能正确的识别到显示器,整个界面分辨率变的非常小,在设置菜单中的显示设置中也不能调节分辨率,并 ...

  4. Linux实战教学笔记05:远程SSH连接服务与基本排错

    第1章 远程连接LInux系统管理 1.1 为什么要远程连接Linux系统 在实际的工作场景中,虚拟机界面或物理服务器本地的窗口都是很少能够接触到的,因为服务器装完系统后,都要拉到IDC机房托管,如果 ...

  5. filebeat的安装及配置

    概述:Filebeat是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读),并且转发这些信息到elasti ...

  6. python简介,数据类型,input,if语句

      1. python的起源 python的创始人为吉多·范罗苏姆(龟叔Guido van Rossum),1989年的圣诞节期间,龟叔为了在阿姆斯特丹打发时间 决心开发一个新的脚本程序解释器,作为A ...

  7. cmd中编译java脚本 (2013-05-02-bd 写的日志迁移

    此前提是已经搭建好了jdk的编译环境! 先写一个java脚本如:建立一个HelloWord.java //public : 表示此类是公共的 一个java文件中只能有一个public类 //class ...

  8. rootfls(根操作系统)

    rootfs根文件系统,linux下的任何目录都是rootfs的一个路径 Files 文件 Directory   目录 FHS(文件层级标准)规定了linux发行标准,也就是一些固定的文件存储 文件 ...

  9. poj 1611 dsu

    The Suspects Time Limit: 1000MS   Memory Limit: 20000K Total Submissions: 35918   Accepted: 17458 De ...

  10. POJ:2785-4 Values whose Sum is 0(双向搜索)

    4 Values whose Sum is 0 Time Limit: 15000MS Memory Limit: 228000K Total Submissions: 26974 Accepted: ...