zoj2770,差分约束系统
来源:互联网 发布:菜谱软件哪个最好 编辑:程序博客网 时间:2024/04/29 22:26
差分约束系统,spfa判负环。
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#define INF 2000000000int dis[1005],cnt[1005],first[1005],next[20005],idx,aa[1005],s[1005],queue[100005];struct edge{ int u; int v; int w;}en[20005];void add(int a,int b,int c){ idx++; en[idx].u=a; en[idx].v=b; en[idx].w=c; next[idx]=first[a]; first[a]=idx;}int spfa(int n){ int i,j,k,l,begin,end,x; begin=0;end=1; queue[0]=0; while(begin!=end) { x=queue[begin]; begin++;// printf("*%d %d\n",x,dis[x]); cnt[x]++; if(cnt[x]>n+1) return -1; for(i=first[x];i!=-1;i=next[i]) { if(dis[en[i].v]<dis[x]+en[i].w) { dis[en[i].v]=dis[x]+en[i].w; queue[end]=en[i].v; end++; } } } return dis[n];}int main(){ int n,m,i,j,k,l,a,b,c,re; while(scanf("%d%d",&n,&m)!=EOF) { memset(first,-1,sizeof(first)); memset(next,-1,sizeof(next)); idx=0; s[0]=0; for(i=1;i<=n;i++) { scanf("%d",&aa[i]); s[i]=s[i-1]+aa[i]; add(i,i-1,-aa[i]); add(i-1,i,0); add(0,i,0); } memset(cnt,0,sizeof(cnt)); for(i=1;i<=m;i++) { scanf("%d%d%d",&a,&b,&c); add(a-1,b,c); //add(b,a-1,s[a-1]-s[b]);//这句没想明白为什么加上后是错的 } for(i=0;i<=n;i++) dis[i]=-INF; dis[0]=0; re=spfa(n); if(re<0) printf("Bad Estimations\n"); else printf("%d\n",re);// for(i=1;i<=idx;i++)// printf("#%d %d %d %d\n",i,en[i].u,en[i].v,en[i].w); } return 0;}
0 0
- zoj2770,差分约束系统
- ZOJ2770 差分约束
- zoj2770 差分约束
- ZOJ2770-Burn the Linked Camp(差分约束系统)
- zoj2770解题报告(差分约束)
- ZOJ2770,火烧连营,差分约束
- 差分约束入门题ZOJ2770&&AOJ517
- ZOJ2770 Burn the Linked Camp,差分约束
- zoj2770 Burn the Linked Camp --- 差分约束
- ZOJ2770 Burn the Linked Camp(差分约束)
- zoj2770(差分约束)火烧连营
- ZOJ2770:Burn the Linked Camp(差分约束)
- 差分约束系统
- 差分约束系统
- 差分约束系统
- 差分约束系统
- 差分约束系统
- 差分约束系统
- C++ 异常处理
- 灵动标签的用法 ecms通过执行sql获取需要的记录
- 淘宝实时数据传输平台: TimeTunnel介绍
- JScrollPane实现自动滚动到底部
- Service后台服务进程的自启动和保持
- zoj2770,差分约束系统
- Windows编程中的各种文件操作方法及其头文件
- poj3295Tautology
- Delphi如何在Form的标题栏绘制自定义文字
- CentOS yum 源为163的源
- 创建 Robotium 测试工程
- 此文胜过你听三年的培训课,最少省十万!
- 世纪佳缘“传情神器”Miss U提前曝光
- jQuery -> 删除/替换DOM元素