这个思路挺巧妙的 ~

定义一行/列的权值为操作后所整体增加的值.

那么,我们会有若干个 $a[x]+b[y]=c$ 的限制条件.

但是呢,我们发现符号是不能限制我们的(因为可加可减)

所以可以将限制条件转化为 $a[x]-b[y]=c$.

这个用带权并查集就可以方便地维护了~

code:

#include <bits/stdc++.h>
#define N 2006
#define setIO(s) freopen(s".in","r",stdin)
using namespace std;
int p[N],dis[N],z[N],x[N],y[N];
int find(int x)
{
if(p[x]==x) return x;
int rt=find(p[x]);
dis[x]=dis[x]+dis[p[x]];
p[x]=rt;
return rt;
}
void solve()
{
int n,m,k,i,j;
scanf("%d%d%d",&n,&m,&k);
for(i=1;i<=k;++i) scanf("%d%d%d",&x[i],&y[i],&z[i]),y[i]+=n;
for(i=1;i<=n+m;++i) p[i]=i, dis[i]=0;
for(i=1;i<=k;++i)
{
int xx=find(x[i]), yy=find(y[i]);
if(xx!=yy)
{
p[xx]=yy;
dis[xx]=z[i]+dis[y[i]]-dis[x[i]];
}
else if(dis[x[i]]-dis[y[i]]!=z[i]) break;
}
if(i>k) printf("Yes\n");
else printf("No\n");
}
int main()
{
// setIO("input");
int T;
scanf("%d",&T);
while(T--) solve();
return 0;
}

  

最新文章

  1. log4net 添加日志
  2. javascript中原型(prototype)与原型链
  3. cocos基础教程(9)声音和音效
  4. eclipse 向HDFS中创建文件夹报错 permission denied
  5. BZOJ3827 : [Poi2014]Around the world
  6. ArrayList调用remove方法需要注意的地方
  7. CKEditor (Toolbar Definition)工具栏自定义配置
  8. 简单的圆形图标鼠标hover效果 | CSS3教程
  9. ajax.abort 终止AJAX请求
  10. [Locked] Shortest Distance from All Buildings
  11. oracle监听
  12. python高级编程 编写一个包1
  13. jQuery 查找带有某一属性的元素
  14. vscode 开发工具
  15. python之闭包与装饰器
  16. 简述在javascript和jquery中cookie的使用
  17. js 原生转json 可以v8中运行
  18. Red hat查找命令所属的rpm包
  19. 微信 H5 支付流程以及一些坑
  20. InterBase 数据库与驱动 版本不同

热门文章

  1. Debian Stretch升级当前最新稳定版内核
  2. docker封装redis镜像
  3. Lodash之throttle(节流)与debounce(防抖)总结
  4. MOOC python笔记(二)python中的数据类型和基本语句
  5. Kafka Internals: Consumers
  6. WCF学习笔记(一)---我的第一个WCF程序
  7. Vue自定义组件中Props中接收数组或对象
  8. 【开发笔记】- 将MySQL数据库表中自增ID从0开始
  9. RabbitMQ基本概念(四)-服务详细配置与日常监控管理
  10. 阿里云ECS-使用putty产品psftp工具上传下载