P3275 [SCOI2011]糖果

差分约束模板题,基本思路就是$d[v]+w[v,u]<=d[u]$,$Spfa$更新方法,

有点套路的是要建立原点,即图中不存在的点来向每个点加边,但同样这是必须的,因为这样做是有意义的,每个小朋友必须要有一颗糖果

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<queue> #define N 10000000
using namespace std; int n,k,tot,head[N];
long long ans;
struct node{
int to,next,w;
}e[N]; void add(int u,int v,int w){
e[++tot].to=v,e[tot].next=head[u],head[u]=tot,e[tot].w=w;
} int d[N],in[N]; struct npdE{
int to,dis;
bool operator < (npdE x)const{
return dis>x.dis;
}
};
queue<npdE>Q;
bool vis[N]; void spfa(){
Q.push((npdE){,});
vis[]=;
while(!Q.empty()){
int u=Q.front().to;vis[u]=,Q.pop();
if(in[u]>n) {
printf("-1");return;
}
for(int i=head[u];i;i=e[i].next){
int v=e[i].to;
if(d[v]<d[u]+e[i].w){
d[v]=d[u]+e[i].w;
if(!vis[v]) in[v]=in[u]+,vis[v]=,Q.push((npdE){v,d[v]});
}
}
}
for(int i=;i<=n;i++) ans+=d[i];
printf("%lld\n",ans);
} int main()
{
scanf("%d%d",&n,&k);
for(int x,u,v,i=;i<=k;i++){
scanf("%d%d%d",&x,&u,&v);
if(x==) add(u,v,),add(v,u,);
else if(x==) add(u,v,);
else if(x==) add(v,u,);
else if(x==) add(v,u,);
else add(u,v,);
if(x==||x==) if(u==v) {return puts("-1"),;}
}
for(int i=n;i>=;i--) add(,i,);
spfa();
return ;
}

最新文章

  1. c 小工具的使用
  2. [LeetCode] Symmetric Tree 判断对称树
  3. C#对象序列化与反序列化zz
  4. Maven 的插件和生命周期的绑定
  5. Java与模式读书笔记
  6. leetcode 142. Linked List Cycle II
  7. [改善Java代码]小心switch带来的空值异常
  8. 88 Merge Sorted Array(归并排序Easy)
  9. g711u与g729比較编码格式
  10. chrome扩展第三方浏览器下载安装
  11. Raspberry Pi(树莓派)上从零开始构建Linux系统(简称PiLFS)(一)
  12. 《算法4》1.5 - Union-Find 算法解决动态连通性问题,Python实现
  13. Office Add-in 设计规范与最佳实践
  14. android:padding和android:margin的区别 详解
  15. Linux - ansible 安装
  16. 如何在Anoconda Prompt 安装pytorch
  17. vs2017使用问题
  18. .NET拾忆:反射的本质——元数据
  19. Netty 包头
  20. web前端----JavaScript(JS)函数

热门文章

  1. overwrite 复制
  2. android.content.ReceiverCallNotAllowedException: 解决方法
  3. BZOJ_3790_神奇项链_manacher+贪心
  4. 第十四周 Leetcode 315. Count of Smaller Numbers After Self(HARD) 主席树
  5. Rails5&#160;Model&#160;Document
  6. P3207 [HNOI2010]物品调度
  7. robotframework - Run标签
  8. 【STM32H7教程】第22章 STM32H7的SysTick实现多组软件定时器
  9. Authorization 头信息为空的解决方案
  10. JQ 获取Table的td 值