2011年10月20日
摘要: UVA_515这个题目是一个差分约束系统的题目。我们设S[i]为第1至i个数的和,特别的,S[0]=0,根据题意可以列出如下三类不等式:①当符号为gt时:S[s+n]-S[s-1]>=k+ 1。②当符号为lt时:S[s+n]-S[s-1]<=k-1。③S[i]-S[i-1]>=-INF(0<i<=N)。然后依据这些不等式进行建图后,用SPFA求最短路即可。其中第③个式子主要是使图连通起来,同时,为了在使用SPFA时开始的时候只需将一个点入队,我们可以引入一个点作为第N+1个数字,且使S[N+1]=0(这个值是不是为0倒没有关系,只要合理即可),同时将第③个式子的- 阅读全文
posted @ 2011-10-20 03:52 Staginner 阅读(343) 评论(0) 推荐(0) 编辑
摘要: UVA_558 这个题目实际上就是在让我们判断原图是否存在负圈,如果使用SPFA的话,当一个点的入队次数大于N时,就可以说明原图存在负圈了。#include<stdio.h>#include<string.h>#define MAXD 1010#define MAXM 2010#define INF 1000000000int d[MAXD], q[MAXD], inq[MAXD], inedq[MAXD];int N, M, first[MAXD], e, next[MAXM], v[MAXM], w[MAXM];void add(int a, int b, int 阅读全文
posted @ 2011-10-20 00:32 Staginner 阅读(277) 评论(0) 推荐(0) 编辑
摘要: UVA_10986 一个裸的最短路问题,直接用队列优化的Bellman-Ford求解即可。#include<stdio.h>#include<string.h>#define MAXD 20010#define MAXM 100010#define INF 1000000000int N, M, S, T, q[MAXD], inq[MAXD];int first[MAXD], next[MAXM], v[MAXM], w[MAXM], d[MAXD], e;void add(int a, int b, int c){ w[e] = c; v[e] = b; next[ 阅读全文
posted @ 2011-10-20 00:08 Staginner 阅读(241) 评论(0) 推荐(0) 编辑