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

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

这题建图没什么特别

x个条件:Sb-Sa<=c

y个条件:Sa-Sb<=-c

题目问的是。1和n之间的关系。

有负环的话,整个就不可能成立,输出-1

假设图是连通的(1到n是连通的),就输出d[n]

不连通就是题目中说-2的情况。

原来我们建图一般加入一个附加结点,或者開始就把全部点入队,就是考虑到不连通的问题,所以加入一个没有意义的条件。

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#define inf 0x3f3f3f3f#define eps 1e-6#define ll __int64using namespace std;#define N 1010struct node{ int v,w,next;}e[30020];int d[N],inq[N],outq[N],n,head[N],h;void addedge(int a,int b,int c){ e[h].v=b; e[h].w=c; e[h].next=head[a]; head[a]=h++;}int spfa(int s){ memset(d,0x3f,sizeof d); memset(inq,0,sizeof inq); memset(outq,0,sizeof outq); d[s]=0;inq[s]=1; queue
q; q.push(s); int i,x; while(!q.empty()) { x=q.front(); q.pop(); inq[x]=0; outq[x]++; if(outq[x]>n) return 0; for(i=head[x];i!=-1;i=e[i].next) { if(d[e[i].v]>d[x]+e[i].w) { d[e[i].v]=d[x]+e[i].w; if(!inq[e[i].v]) { inq[e[i].v]=1; q.push(e[i].v); } } } } return 1;}void init(){ memset(head,-1,sizeof head); h=0;}int main(){ int T,a,b,c,x,y; scanf("%d",&T); while(T--) { init(); scanf("%d%d%d",&n,&x,&y); while(x--) { scanf("%d%d%d",&a,&b,&c); addedge(a,b,c); } while(y--) { scanf("%d%d%d",&a,&b,&c); addedge(b,a,-c); } if(!spfa(1)) printf("-1\n"); else if(d[n]!=inf) printf("%d\n",d[n]); else printf("-2\n"); } return 0;}

转载地址:http://wohno.baihongyu.com/

你可能感兴趣的文章
2018“一带一路”阿里巴巴诸神之战全球创客大赛全面启动
查看>>
快轮天才发明家刘峰,上榜福布斯2017年亚洲人物
查看>>
Jenkins使用FTP进行一键部署及回滚(Windows)
查看>>
9-51单片机ESP8266学习-AT指令(测试TCP服务器--51单片机程序配置8266,C#TCP客户端发信息给单片机控制小灯的亮灭)...
查看>>
物联网安全形势严峻——除严加管控外别无选择
查看>>
深度学习机器72小时自学国际象棋达到大师水平
查看>>
香港设计师带来仿生机器人,其身体 70% 构造均由3D打印完成
查看>>
探测能源、跨洲安全通信……你所想不到的量子技术!
查看>>
实现单词大小写不敏感的正则表达式的匹配!
查看>>
lintcode 单词接龙II
查看>>
快速清理Exchange 2003中的SMTP队列
查看>>
python之协程
查看>>
bootstrap16-上下文表格布局
查看>>
一台linux服务器配置多个tomcat应用
查看>>
不规则物体形状匹配综述
查看>>
自动化设计-框架介绍 TestCase
查看>>
CJ看showgirl已经out!VR体验才是王道
查看>>
我的实例我做主--ECS运维必读
查看>>
postgresql 数组类型
查看>>
Vue+Webpack常见问题(持续更新)
查看>>