POJ 1364 差分约束

原创 2016年08月30日 14:52:18

思路:
把所有“>”变成“≥”
把所有“<”变成“≤”

(加一减一就好了)

然后我们发现:图不一定连通!!

怎么办呢

对于每一个连通块SPFA就好了嘛……

//By SiriusRen
#include <queue>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define N 111
using namespace std;
char a[3],inq[N];
int n,vis[N],xx,yy,zz,m,dis[N],cnt[N];
int first[N],next[N*N],v[N*N],w[N*N],tot=0;
void add(int x,int y,int z){w[tot]=z,v[tot]=y,next[tot]=first[x],first[x]=tot++;}
bool spfa(int x){
    memset(cnt,0,sizeof(cnt));
    memset(dis,0xcf,sizeof(dis));
    memset(inq,0,sizeof(inq));
    dis[x]=0;vis[x]=cnt[x]=1;
    queue<int>q;q.push(x);
    while(!q.empty()){
        int t=q.front();q.pop();
        inq[t]=0;vis[t]=1;
        for(int i=first[t];~i;i=next[i])
            if(dis[v[i]]<dis[t]+w[i]){
                dis[v[i]]=dis[t]+w[i];
                if(!inq[v[i]]){
                    inq[v[i]]=1;
                    cnt[v[i]]++;q.push(v[i]);
                    if(cnt[v[i]]>n)return 0;
                }
            }
    }
    return 1;
}
int main(){
    scanf("%d",&n);
    start:memset(first,-1,sizeof(first));
    memset(vis,0,sizeof(vis));
    scanf("%d",&m);
    for(int i=1;i<=m;i++){
        scanf("%d%d%s%d",&xx,&yy,a,&zz);
        if(a[0]=='g')add(xx-1,xx+yy,zz+1);
        else add(xx+yy,xx-1,-zz+1);
    }
    for(int i=0;i<=n;i++){
        if(vis[i])continue;
        if(!spfa(i)){
            puts("successful conspiracy");
            goto end;
        }
    }
    puts("lamentable kingdom");
    end:if(scanf("%d",&n)&&n)goto start;
}

这里写图片描述

版权声明:本文由SiriusRen原创,但可以转载,因为我们是兄弟 爬虫能爬到这句话么哈哈哈

相关文章推荐

POJ 1364 King(差分约束简单题 判环)

POJ 1364题目大意有n个变量a1...ana_1...a_n,有若干形如(asi+asi+1+...+asi+ni−1+asi+ni>//< k_i)的不等式,问你是否存在满足约束条件的一组解。...
  • mmy1996
  • mmy1996
  • 2017年02月20日 18:28
  • 393

POJ 1364 King [差分约束系统]

King Time Limit: 1000MS Memory Limit: 10000KB 64bit IO Format: %lld & %lluDescription O...

poj 1364 King(差分约束)(中等)

这道题唯一的难度大概就是看懂题。。 我一开始i.e. aSi + aSi+1 + ... + aSi+ni < ki or aSi + aSi+1 + ... + aSi+ni > ki resp.看...

poj1364King(差分约束系统,判负环)

原题地址:点击打开链接 s[a] + s[a+1] + …… + s[b] < c 可以转化成前n项和sum[b] - sum[a - 1] < c,为了能用spfa,即将< 转化成 ...

POj King 1364(差分约束)

King Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 12687   Accepted...

POJ 1364 - King(差分约束)

题目: http://poj.org/problem?id=1364 题意: 一个序列含有n个数,有q个限制条件,表示为区间和(s,s+n)> k 或是 区间和(s,s+n) 思路: Si ...

POJ 1364 King【差分约束+SPFA/Bellman-Ford】

King Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 11846   Accepted: ...

[POJ1364]King(差分约束系统)

古今中外,国王的孩子多智障。

poj 1364 SPFA+差分约束

约束条件: 如果是gt    s[a-1]-s[a+b] 如果是lt     s[a+b]-s[a-1] 此外,新加的原点与其他点的leth为零。n+1为原点。 #include ...

【POJ 1364】King(差分约束系统)

【POJ 1364】King(差分约束系统) King Time Limit: 1000MS   Memory Limit: 10000K Total Sub...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POJ 1364 差分约束
举报原因:
原因补充:

(最多只允许输入30个字)