Ybtoj 强连通分量.D 恒星的亮度(差分约束系统简单总结)

差分约束系统

利用最短路径算法结束后图中任意一条边u->v,都满足dis[v]<=dis[u]+w(u,v)的性质,将一个所有不等式的形式均为Xi<=Xj+k的不等式组,转化成一个有向图,其中,每一条不等式转化为一条由j指向i、边权为k的有向边。
在构造好的有向图上进行最短路径算法,如果图中有负环,则无解。否则,点i到点j的最短路径dis[i][j]就为Xj-Xi的最大值,即当Xi确定时,Xj=Xi+dis[i][j]且此时Xj最大。

(如果是求解最小值,就是用最长路径算法,将一个所有不等式的形式均为Xi>=Xj+k的不等式组变成有向图。像形如Xi>=Xj+w的不等式,则连一条由j指向i,边权为w的边。其余过程与上面相似)

如果有疑问,或觉得以上结论有误的,移步大佬博客。
学废了以后来教教我,我也不太确定我的理解是否正确。。。


恒星的亮度

大佬博客传送门

#include<iostream>
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
const int N=1e6;
int n,m,ti,top,tot;
//强连通分量i里每个恒星的亮度都为f[i] 
int st[N],dfn[N],low[N],col[N],deg[N],f[N],sum[N];
int cnt,he[N],ne[N],to[N],we[N];
long long ans;
vector <pair<int,int> > vec[N];
void add(int u,int v,int w)
{
   
	cnt++;
	ne
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值