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 1716】Integer Intervals(差分约束系统)

【POJ 1716】Integer Intervals(差分约束系统) Integer Intervals Time Limit: 1000MS   Memory Limit: 1000...
  • ChallengerRumble
  • ChallengerRumble
  • 2016年01月21日 10:20
  • 951

POJ 1364 差分约束

一直不知道差分约束是什么类型题目,最近在写最短路问题就顺带看了下,原来就是给出一些形如x-y 好神奇的是这类问题竟然可以转换成图论里的最短路径问题,下面开始详细介绍下 比如给出三个不等式,...
  • u010270082
  • u010270082
  • 2014年08月08日 15:53
  • 217

POJ 1364差分约束

给出n个变量,m个约束公式 Sa + Sa+1 + .... + Sa+b ki ,叫你判断是否存在着解满足这m组约束公式。 Sa + Sa+1   +   .+ Sa+b =  Sum[a+...
  • u013491262
  • u013491262
  • 2016年12月05日 15:57
  • 74

poj 1364差分约束

King Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 10206   Accepted...
  • u013268685
  • u013268685
  • 2014年09月02日 21:54
  • 568

POJ 1364 差分约束

题意:给你一个n和m,接下来m行,每行miao'shu'le
  • u013307987
  • u013307987
  • 2014年11月01日 11:39
  • 261

POJ 1364 差分约束

判断差分约束是否存在 #include #include #include #include #include #include #include #include #include...
  • livenls
  • livenls
  • 2013年08月19日 19:07
  • 331

POJ 1364 差分约束

解题的思路比较奇葩。第一次见到啊,也不知道别人是怎么看出来这种情况下就是差分约束也就是可以用到图论,表示真的好迷啊。看来对差分约束的概念还很差呢。。 #include #include #inclu...
  • qq_23702679
  • qq_23702679
  • 2016年08月24日 21:36
  • 68

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

【POJ 1364】King(差分约束系统) King Time Limit: 1000MS   Memory Limit: 10000K Total Sub...
  • ChallengerRumble
  • ChallengerRumble
  • 2016年07月20日 20:42
  • 2136

POJ 1364 King(差分约束)

思路:这个题目真是难读....下面的题解转别人的 现在假设有一个这样的序列,S={a1,a2,a3,a4...ai...at} 其中ai=a*si,其实这句可以忽略不看 现在给出一个不等...
  • qq_21057881
  • qq_21057881
  • 2016年08月08日 15:19
  • 94

POJ 1364 King (差分约束)

Description Once, in one kingdom, there was a queen and that queen was expecting a baby. The queen...
  • qq_28954601
  • qq_28954601
  • 2017年03月09日 21:10
  • 209
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POJ 1364 差分约束
举报原因:
原因补充:

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