bzoj2330 [SCOI2011]糖果 差分约束
来源:互联网 发布:美工培训免费视频教程 编辑:程序博客网 时间:2024/06/14 22:31
分析:比较经典的差分约束,对于每种情况我们可以通过不同的连边方式来体现。
1.=,add(x,y,0),add(y,x,0)
2.<,add(x,y,1)
3.>=,add(y,x,0)
4.>,add(y,x,1)
5.<=,add(x,y,0)
其中2,4是无等于号的,如果x=y,明显无解。
然后连边,连边完以后跑spfa最长路,注意这里spfa先把所有点加入,然后一个个跑,具体看代码。答案就是所有点的dis值。其实这里的spfa类似于连了一个超级源点跑。
code:
#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fd(i,a,b) for(int i=a;i>=b;i--)using namespace std;typedef long long ll;const int N=5e5+5;int n,m;int head[N],go[N],next[N];int q[N],in[N],vis[N],val[N],dis[N];int tot;int t=0,w=1;inline void add(int x,int y,int z){ go[++tot]=y; val[tot]=z; next[tot]=head[x]; head[x]=tot;}inline bool spfa(){ while (t<w) { int x=q[++t]; int i=head[x]; vis[x]=0; for(int i=head[x];i;i=next[i]) { int v=go[i]; if (dis[v]<dis[x]+val[i]) { dis[v]=dis[x]+val[i]; in[i]++; if (in[i]>n)return 0; if (!vis[v]) { vis[v]=1; q[++w]=v; } } } } return 1;}int main(){ scanf("%d%d",&n,&m); fo(i,1,m) { int id,x,y; scanf("%d%d%d",&id,&x,&y); if (id==1) { add(x,y,0); add(y,x,0); } if (id==2) { add(x,y,1); if (x==y) { printf("-1\n"); return 0; } } if (id==3) { add(y,x,0); } if (id==4) { add(y,x,1); if (x==y) { printf("-1\n"); return 0; } } if (id==5) { add(x,y,0); } } fo(i,1,n) { vis[i]=dis[i]=1; q[++w]=i; } if (!spfa()) { printf("-1\n"); return 0; } ll ans=0; fo(i,1,n)ans+=dis[i]; printf("%lld\n",ans); return 0;}
0 0
- bzoj2330 [SCOI2011]糖果 差分约束
- 【差分约束】[SCOI2011] bzoj2330 糖果
- [BZOJ2330]SCOI2011糖果|差分约束
- 【bzoj2330】【scoi2011】【糖果】【差分约束】
- [BZOJ2330][SCOI2011]糖果(差分约束)
- 【BZOJ2330 SCOI2011】糖果差分约束
- BZOJ2330: [SCOI2011]糖果 差分约束+spfa
- 【BZOJ2330】 [SCOI2011]糖果 差分约束+贪心
- [BZOJ2330][SCOI2011][差分约束]糖果
- bzoj2330 [SCOI2011]糖果 差分约束
- bzoj2330 [SCOI2011]糖果 差分约束
- [BZOJ2330][SCOI2011]糖果 差分约束系统
- BZOJ2330[SCOI2011] 糖果 题解【差分约束】
- bzoj2330 SCOI2011 糖果 【差分约束】
- bzoj2330 [SCOI2011]糖果(差分约束+spfa)
- BZOJ2330(SCOI2011)[糖果]--差分约束系统
- BZOJ2330 [SCOI2011]糖果 差分约束模板
- 差分约束——BZOJ2330/Luogu3275 [SCOI2011]糖果
- layer页向父页传值
- 【Linux学习笔记】二、权限管理命令
- JS金钱转换大写
- Android通用流行框架大全
- Filter
- bzoj2330 [SCOI2011]糖果 差分约束
- 终端中找任意的文件
- java中的静态代码块、构造代码块、普通代码块和同步代码块总结
- 电商网站HTTPS实践之路(二)——系统改造篇
- Linux--线程同步与互斥之读写锁
- 性能优化十五之电量优化案例
- 使用命令行启动服务
- vfio-iommu-type1和vfio_fops的关联
- 4.6组队赛H题分石头问题,推导,规律