poj1364

设s[i] 表示a1 + a2 + ... + a(i-1)的和

给我们n个点,m条约束

如果是a b gt c    那么表示 s[a+b+1] - s[a] > c      --->  s[a] -s[a+b+1] <-c <=-c-1      --> s[a] <= s[a+b+1] + (-c-1)

如果是a b lt c     那么表示 s[a+b+1] - s[a] < c      --->  s[a+b+1] - s[a] <= c - 1     -->  s[a+b+1] <= s[a] + (c-1)

题目要问我们是不是所有变量都满足约束条件,如果满足输出lamentable kingdom, 如果不满足,输出successful conspiracy

满不满足约束条件, 即图存不存在负权回路。

 #include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
#include <iostream>
#include <queue>
#include <stack>
#include <vector>
#include <map>
#include <set>
#include <string>
#include <math.h>
using namespace std;
#pragma warning(disable:4996)
typedef long long LL;
const int INF = <<;
/*
s[a+b+1] - s[a] >c --> s[a] - s[a+b+1] < -c <= -c-1
s[a+b+1] - s[a] <c --> s[a+b+1] -s[a] < c <= c-1
不连通要我们求环
*/
struct Edge
{
int from,to,dist;
}es[+];
int dist[+];
bool bellman_ford(int n, int m)
{
//因为是求存不存在负权回路,那么只要初始化为0,更新n遍之后,如果还能再更新,那么就存在
for(int i=; i<=n; ++i)
dist[i] = ;
for(int i=; i<=n; ++i)//n+1个点,所以要更新n遍
{
for(int j=; j<m; ++j)
{
Edge &e = es[j];
//因为图是不连通的,所以如果置为INF的时候,不能在这里加这个条件
if(/*dist[e.from]!=INF &&*/ dist[e.to] > dist[e.from] + e.dist)
dist[e.to] = dist[e.from] + e.dist;
}
}
for(int j=; j<m; ++j)
{
Edge &e = es[j];
if(dist[e.to] > dist[e.from] + e.dist)
return false;
}
return true;
}
int main()
{ int n,m,a,b,c,i;
char str[];
while(scanf("%d",&n),n)
{
scanf("%d",&m);
for(i=; i<m; ++i)
{
scanf("%d%d%s%d",&a,&b,str,&c);
if(str[]=='g')
{
es[i].from = a + b + ;
es[i].to = a;
es[i].dist = -c - ;
}
else
{
es[i].from = a;
es[i].to = a + b +;
es[i].dist = c-;
}
}
bool ret = bellman_ford(n,m);
if(ret)
puts("lamentable kingdom");
else
puts("successful conspiracy");
}
return ;
}

poj1364(差分约束系统)的更多相关文章

  1. UVA11478 Halum [差分约束系统]

    https://vjudge.net/problem/UVA-11478 给定一个有向图,每条边都有一个权值.每次你可以选择一个结点v和一个整数d,把所有以v为终点的边的权值减小d,把所有以v为起点的 ...

  2. BZOJ 2330: [SCOI2011]糖果 [差分约束系统] 【学习笔记】

    2330: [SCOI2011]糖果 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 5395  Solved: 1750[Submit][Status ...

  3. ACM/ICPC 之 差分约束系统两道(ZOJ2770-POJ1201)

    当对问题建立数学模型后,发现其是一个差分方程组,那么问题可以转换为最短路问题,一下分别选用Bellmanford-SPFA解题 ZOJ2770-Burn the Linked Camp //差分约束方 ...

  4. POJ1201 Intervals(差分约束系统)

    与ZOJ2770一个建模方式,前缀和当作点. 对于每个区间[a,b]有这么个条件,Sa-Sb-1>=c,然后我就那样连边WA了好几次. 后来偷看数据才想到这题还有两个隐藏的约束条件. 这题前缀和 ...

  5. UVA 11374 Halum (差分约束系统,最短路)

    题意:给定一个带权有向图,每次你可以选择一个结点v 和整数d ,把所有以v为终点的边权值减少d,把所有以v为起点的边权值增加d,最后要让所有的边权值为正,且尽量大.若无解,输出结果.若可无限大,输出结 ...

  6. Burn the Linked Camp(bellman 差分约束系统)

    Burn the Linked Camp Time Limit: 2 Seconds      Memory Limit: 65536 KB It is well known that, in the ...

  7. zoj 2770 Burn the Linked Camp (差分约束系统)

    // 差分约束系统// 火烧连营 // n个点 m条边 每天边约束i到j这些军营的人数 n个兵营都有容量// Si表示前i个军营的总数 那么 1.Si-S(i-1)<=C[i] 这里 建边(i- ...

  8. POJ 3169 Layout (差分约束系统)

    Layout 题目链接: Rhttp://acm.hust.edu.cn/vjudge/contest/122685#problem/S Description Like everyone else, ...

  9. POJ 3169 Layout 差分约束系统

    介绍下差分约束系统:就是多个2未知数不等式形如(a-b<=k)的形式 问你有没有解,或者求两个未知数的最大差或者最小差 转化为最短路(或最长路) 1:求最小差的时候,不等式转化为b-a>= ...

  10. bzoj 2330 [SCOI2011]糖果(差分约束系统)

    2330: [SCOI2011]糖果 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3574  Solved: 1077[Submit][Status ...

随机推荐

  1. 深入探讨MFC消息循环和消息泵

    首先,应该清楚MFC的消息循环(::GetMessage,::PeekMessage),消息泵(CWinThread::PumpMessage)和MFC的消息在窗口之间的路由是两件不同的事情.在MFC ...

  2. CloseHandle(),TerminateThread(),ExitThread()的差别

    线程的handle用处: 线程的handle是指向"线程的内核对象"的,而不是指向线程本身.每一个内核对象仅仅是内核分配的一个内存块,而且仅仅能由内核訪问.该内存块是一种数据结构, ...

  3. HTML属性

  4. TestComplete实测Flex

    1.TestComplete提供了已经编译好的Flex界面,可以直接使用: http://support.smartbear.com/samples/testcomplete9/flex/orders ...

  5. Spring的datasource配置详解

    一句话,Spring对Hibernate的整合,是在applicationContext.xml中配置sessionFactory来实现的,其中sessionFactory中要装配dataSource ...

  6. Virtualbox mouse move in and out and file share with windows

    How to use Virstalbox to share files with Linux and Windows, and to move the mouse in and out Virtua ...

  7. Android中Menu的基本使用方法

    一. 使用xml定义Menu 菜单资源文件必须放在res/menu文件夹中.菜单资源文件必须使用<menu>标签作为根节点.除了<menu>标签外,还有另外两个标签用于设置菜单 ...

  8. 黑马程序猿_ 利用oc的协议实现代理模式

    先说下代理模式是什么吧 定义: 为其它对象提供一种代理以控制对这个对象的訪问.在某些情况下,一个对象不适合或者不能直接引用还有一个对象 而代理对象能够在client和目标对象之间起到中介的作用. 在看 ...

  9. cocos2.2.3 HelloCpp TestCpp android 环境搭建 编译

    cygwin make PATH->E:\cygwin\bin JAVA_HOME->C:\Program Files\Java\jdk1.8.0_05 Eclipse->Windo ...

  10. 为什么 as sysdba着陆方法oracle数据库,为什么刚刚输入username和password我们都可以登录?

    事实上,这是oracle问题数据库的身份验证方法 该 sqlnet.ora在文件 SQLNET.AUTHENTICATION_SERVICES= (NTS) 变 SQLNET.AUTHENTICATI ...