洛谷OJ:P5960 【模板】差分约束算法

洛谷OJ:P5960 【模板】差分约束算法_第1张图片

洛谷OJ:P5960 【模板】差分约束算法_第2张图片

思路:差分约束模板题,注意使用SPFA来判断负环,也即无解的情况。

#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define maxn 5005
#define ll long long
int n,m,dis[maxn],cnt[maxn];
bool vis[maxn];
queue que;
struct node{
	int to,val;
	node(int to,int val):to(to),val(val){}
};
vector q[maxn];
bool SPFA(int start,int n){
	memset(dis,127,sizeof(dis));
	dis[start]=0;
	que.push(start);
	while(!que.empty()){
		int now=que.front();
		que.pop();
		if(cnt[now]==n)
			return false;
		vis[now]=false;
		for(int i=0;idis[now]+q[now][i].val){
				dis[v]=dis[now]+q[now][i].val;
				if(!vis[v]){
					vis[v]=true;
					que.push(v);
					cnt[v]++;
				}
			}
		}
	}
	return true;
}

int main(void){
	int x,y,w;
	scanf("%d%d",&n,&m);
	for(int i=0;i

 

你可能感兴趣的:(图论)