题目:1716http://poj.org/problem?id=1716
差分约束:s[i+n]-s[i]>=k,题目中无负权回路不用判定,0<=a<=b,最小值从0开始,构造差分约束系统时:a-(b+1)>=k,建立b+1到a的边,权值为k,建立图。
spfa+最长路:
#include<cstdio>
#include<queue>
#include<algorithm>
#include<cstring>
#define len 10005
#define inf 1000000007
using namespace std;
int d[len],head[len],k,m,n;
bool vis[len];
struct node
{
int j,v,next;
}s[4*len];
void add(int x,int y,int z)
{
s[k].j=y;
s[k].v=z;
s[k].next=head[x];
head[x]=k++;
}
void spfa(int x)
{
d[x]=0;
vis[x]=1;
queue<int> q;
q.push