博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 1364 差分约束
阅读量:7098 次
发布时间:2019-06-28

本文共 1265 字,大约阅读时间需要 4 分钟。

思路:

把所有“>”变成“≥”
把所有“<”变成“≤”

(加一减一就好了)

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

怎么办呢

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

//By SiriusRen#include 
#include
#include
#include
#define N 111using 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
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]]
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;}

这里写图片描述

转载于:https://www.cnblogs.com/SiriusRen/p/6532318.html

你可能感兴趣的文章
Linux学习 Unit 7
查看>>
[HDFS Manual] CH3 HDFS Commands Guide
查看>>
物联网助力制造业加速升级
查看>>
Linux命令(35):ping命令-向网络主机发送数据包
查看>>
JDK环境变量的配置
查看>>
类火墙的iptables
查看>>
JDBC实现数据库的增删改查
查看>>
解决和防范ARP欺骗最详细的视频教程
查看>>
centos如何查看网口是百兆还是千兆
查看>>
Oracle锁总结
查看>>
svn3.0版修正版
查看>>
数据中心呈现勃勃生机 中国市场将达190亿规模
查看>>
第一单元练习题
查看>>
马哥linux高薪中级-web服务器(续二)
查看>>
如何使用LDAP用户单点登录到Horizon桌面和应用
查看>>
关于tomcat和jetty对比(不喜欢jetty的勿看)
查看>>
Python的垃圾回收机制
查看>>
zabbix 布署实践【1 server安装】
查看>>
LINUX REDHAT第六单元文档
查看>>
python实现手机号归属地相关信息查询
查看>>