BZOJ 4500: 矩阵
2024-09-08 07:55:32
4500: 矩阵
Time Limit: 1 Sec Memory Limit: 256 MB
Submit: 326 Solved: 182
[Submit][Status][Discuss]
Description
有一个n*m的矩阵,初始每个格子的权值都为0,可以对矩阵执行两种操作:
1. 选择一行, 该行每个格子的权值加1或减1。
2. 选择一列, 该列每个格子的权值加1或减1。
现在有K个限制,每个限制为一个三元组(x,y,c),代表格子(x,y)权值等于c。问是否存在一个操作序列,使得操作完后的矩阵满足所有的限制。如果存在输出”Yes”,否则输出”No”。
Input
先输入一个T(T <= 5)代表输入有T组数据,每组数据格式为:
第一行三个整数n, m, k (1 <= n, m,k <= 1000)。
接下来k行,每行三个整数x, y, c。
Output
对于每组数据,输出Yes或者No。
Sample Input
2
2 2 4
1 1 0
1 2 0
2 1 2
2 2 2
2 2 4
1 1 0
1 2 0
2 1 2
2 2 1
2 2 4
1 1 0
1 2 0
2 1 2
2 2 2
2 2 4
1 1 0
1 2 0
2 1 2
2 2 1
Sample Output
Yes
No
No
HINT
Source
分析:
网格图...嗯,二分图...
对于一个限制$(x,y,c)$就代表$val[x]+val[y]=c$...所以我们$dfs$找到矛盾就好了...
代码:
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
//by NeighThorn
using namespace std; const int maxn=2000+5; int n,m,k,cas,cnt,pos,flag,w[maxn],hd[maxn],to[maxn],nxt[maxn],vis[maxn],val[maxn]; inline void add(int x,int y,int s){
w[cnt]=s;to[cnt]=y;nxt[cnt]=hd[x];hd[x]=cnt++;
} inline bool dfs(int x,int fa){
vis[x]=1;
for(int i=hd[x];i!=-1;i=nxt[i])
if(!vis[to[i]]){
val[to[i]]=w[i]-val[x];
if(!dfs(to[i],x)) return false;
}
else if(val[to[i]]!=w[i]-val[x])
return false;
return true;
} signed main(void){
scanf("%d",&cas);
while(cas--){
flag=0;cnt=0;
memset(hd,-1,sizeof(hd));
memset(vis,0,sizeof(vis));
memset(val,0,sizeof(val));
scanf("%d%d%d",&n,&m,&k);
for(int i=1,x,y,s;i<=k;i++)
scanf("%d%d%d",&x,&y,&s),add(x,y+n,s),add(y+n,x,s),pos=x;
for(int i=1;i<=n+m;i++)
if(!vis[i])
if(!dfs(i,-1)){
puts("No");flag=1;break;
}
if(!flag) puts("Yes");
}
return 0;
}
By NeighThorn
最新文章
- EventBus使用
- 正则匹配抓取input 隐藏输入项和 <;td>;标签内的内容
- 安全协议系列(五)---- IKE 与 IPSec(中)
- Oracle 11g 7个压缩包说明
- 上传文件(单文件)(FormData)(前端代码+.NET服务器端)
- C语言和Lua的交互
- Html笔记(一)概述
- struts2标签汇总
- 病毒侵袭持续中 - HDU 3065(AC自动机,判断子串个数)
- Jmeter函数引用和函数重定向
- ArrayList ConcurrentModificationException
- c# redis 操作类库推荐:StackExchange.Redis.Extensions
- bootstrap插件fileinput.js 出现出现$(";#xxxx";).fileinput({}); 不生效的情况解决
- RecyclerView的点击、滑动、拖动事件
- python 列表list相关知识
- Spring集成ElasticSearch搜索引擎
- 《剑指offer》-孩子们的游戏(圆圈中最后剩下的数)
- Babel总结
- 彻底理解mysql服务器的字符集转换问题
- 在ASP.NET MVC中实现本地化和全球化
热门文章
- graphQL 启动报错No method or field found with any of the following signatures (with or without one of [interface graphql.schema.DataFetchingEnvironment] as the last argument), in priority order:
- django项目实现第三方github登录
- linux三剑客之sed深度实践
- 数据结构-单链表(Linked List)
- python爬虫的基本思路
- 解析XML格式数据
- STM32启动文件:startup_stm32f10x_hd.s等启动文件的简单描述
- UVA1484 Alice and Bob&#39;s Trip (hdu3660)
- optparser 模块 提取IP,端口,用户名,密码参数模板
- LINUX下实现按秒执行计划任务