(x,y,z)表示格子(x,y)的值为z,也就是x行+y列加的次数等于z,相当于差分约束的条件,用dfs判断冲突即可。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=2005;
int T,n,m,k,cnt,p,h[N],va[N],f;
bool v[N];
struct qwe
{
int ne,to,va;
}e[N<<1];
void add(int u,int v,int w)
{
cnt++;
e[cnt].ne=h[u];
e[cnt].to=v;
e[cnt].va=w;
h[u]=cnt;
}
bool dfs(int u)
{
v[u]=1;
for(int i=h[u];i;i=e[i].ne)
{
if(!v[e[i].to])
{
va[e[i].to]=e[i].va-va[u];
if(!dfs(e[i].to))
return 0;
}
else if(va[e[i].to]!=e[i].va-va[u])
return 0;
}
return 1;
}
int main()
{
scanf("%d",&T);
while(T--)
{
cnt=0;f=0;
memset(v,0,sizeof(v));
memset(h,0,sizeof(h));
memset(va,0,sizeof(va));
scanf("%d%d%d",&n,&m,&k);
for(int i=1,x,y,z;i<=k;i++)
{
scanf("%d%d%d",&x,&y,&z);
add(x,y+n,z);
add(y+n,x,z);
p=x;
}
for(int i=1;i<=n+m;i++)
if(!v[i]&&!dfs(i))
{
puts("No");
f=1;
break;
}
if(!f)
puts("Yes");
}
return 0;
}

最新文章

  1. Shell碎碎念
  2. sys模块和os模块,利用sys模块生成进度条
  3. 当标签上写了runat=&quot;server&quot; 后,&lt;%%&gt;就会无效
  4. git sshkeygen Fingerprint cannot be generated解决方法
  5. WinForm 弹框确认后执行
  6. html元素中class属性值多个空格分格
  7. CHARINDEX,PATINDEX,STUFF函数
  8. It is indirectly referenced from required .class files
  9. SqlBulkCoy和普通数据库操作执行速度对比
  10. uva10245-The Closest Pair Problem(平面上的点分治)
  11. Python 接口测试(五)
  12. Centos7 下安装Docke
  13. git宝典—应付日常工作使用足够的指北手册
  14. Redis(4)---主从复制
  15. C# Note5:使用相对路径读取文件
  16. 反射中的一个问题点:利用Method执行main方法特殊的地方
  17. 使用__slots__节省python内存技巧
  18. Activiti工作流与BPMN2.0规范
  19. Nginx使用教程(一):Nginx编译参数详解
  20. Gitlab库已损坏前端显示500错误解决方法

热门文章

  1. EsAlert
  2. 前端学习之--html
  3. Codeforces 659B Qualifying Contest【模拟,读题】
  4. 学习日常笔记&lt;day12&gt;jsp基础
  5. idea2019设置智能提示忽略大小写
  6. 关于用String Calender类 计算闰年的Demo
  7. 转 gSOAP中使用TCP协议传输数据
  8. Building clang on RedHat
  9. 【APUE】vim常用命令
  10. 一个重绘MFC的文件传输client