题目链接:

http://www.lydsy.com/JudgeOnline/problem.php?id=4500

题解:

从行向列建边,代表一个格子a[i][j],对每个顶点的所有操作可以合并在一起用sum[xi]表示,

那么题目相当于是要求sum[xi]+sum[xj]==a[xi][xj];

等价于:sum[xj]-(-sum[xi])==a[xi][xj]

等价于:sum[xj]-sum'[xi]<=a[xi][xj] && sum[xj]-sum'[xi]>=a[xi][xj]

等价于:sum[xj]<=sum'[xi]+w && sum'[xi]<=sum[xj]+(-w)

所有就可以用差分约束来做了。跑一遍最短路,判一下负环就可以了。

#include<iostream>
#include<cstring>
#include<cstdio>
#include<vector>
#include<queue>
using namespace std; const int maxn = ;
const int INF = 0x3f3f3f3f; struct Edge {
int v, w;
Edge(int v, int w) :v(v), w(w) {}
Edge() {}
}; int n, m,k;
vector<Edge> egs;
vector<int> G[maxn]; void addEdge(int u, int v, int w) {
G[u].push_back(egs.size());
egs.push_back(Edge(v,w));
} bool inq[maxn];
int cnt[maxn];
int d[maxn];
bool spfa() {
memset(inq, , sizeof(inq));
memset(cnt, , sizeof(cnt));
for (int i = ; i <= n + m; i++) d[i] = INF;
queue<int> Q;
d[] = ; inq[] = true; Q.push();
while (!Q.empty()) {
int u = Q.front(); Q.pop();
inq[u] = false;
for (int i = ; i < G[u].size(); i++) {
Edge& e = egs[G[u][i]];
if (d[e.v] > d[u] + e.w) {
d[e.v] = d[u] + e.w;
if (!inq[e.v]) {
Q.push(e.v);
inq[e.v] = true;
if (++cnt[e.v] > n+m+) {
return false;
}
}
}
}
}
return true;
} void init() {
for (int i = ; i <= n + m; i++) G[i].clear();
egs.clear();
} int main() {
int tc;
scanf("%d", &tc);
while (tc--) {
scanf("%d%d%d", &n, &m, &k);
init();
for (int i = ; i < k; i++) {
int u, v, w;
scanf("%d%d%d", &u, &v, &w);
addEdge(u, v+n, w);
addEdge(v+n, u, -w);
}
for (int i = ; i <= n + m; i++) {
addEdge(, i, );
}
if (spfa()) {
puts("Yes");
}
else {
puts("No");
}
}
return ;
} /*
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
*/

BZOJ 4500: 矩阵 差分约束的更多相关文章

  1. BZOJ.4500.矩阵(差分约束 SPFA判负环 / 带权并查集)

    BZOJ 差分约束: 我是谁,差分约束是啥,这是哪 太真实了= = 插个广告:这里有差分约束详解. 记\(r_i\)为第\(i\)行整体加了多少的权值,\(c_i\)为第\(i\)列整体加了多少权值, ...

  2. bzoj 4500: 矩阵 差分约束系统

    题目: Description 有一个n*m的矩阵,初始每个格子的权值都为0,可以对矩阵执行两种操作: 选择一行, 该行每个格子的权值加1或减1. 选择一列, 该列每个格子的权值加1或减1. 现在有K ...

  3. bzoj 4500: 矩阵【差分约束】

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

  4. 【BZOJ 4500 矩阵】

    Time Limit: 1 Sec  Memory Limit: 256 MBSubmit: 390  Solved: 217[Submit][Status][Discuss] Description ...

  5. BZOJ 4500: 矩阵

    4500: 矩阵 Time Limit: 1 Sec  Memory Limit: 256 MBSubmit: 326  Solved: 182[Submit][Status][Discuss] De ...

  6. bzoj 4500 矩阵 题解

    题意: 有一个 $ n * m $ 的矩阵,初始每个格子的权值都为 $ 0 $,可以对矩阵执行两种操作: 选择一行,该行每个格子的权值加1或减1. 选择一列,该列每个格子的权值加1或减1. 现在有 $ ...

  7. BZOJ 2330 糖果 差分约束求最小值

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=2330 题目大意: 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果 ...

  8. BZOJ 4500: 矩阵 带权并查集

    这个思路挺巧妙的 ~ 定义一行/列的权值为操作后所整体增加的值. 那么,我们会有若干个 $a[x]+b[y]=c$ 的限制条件. 但是呢,我们发现符号是不能限制我们的(因为可加可减) 所以可以将限制条 ...

  9. 【BZOJ4500】矩阵(差分约束)

    [BZOJ4500]矩阵(差分约束) 题面 BZOJ 然而权限题 题解 显然拆分行和列.不妨设这一行/列总共加减的值是\(p\),那么每一个限制就是两个数的和为一个特定的数.这样子不好做,反正是一个二 ...

随机推荐

  1. Js图片滚动

    参考博文:http://blog.chinaunix.net/uid-12304670-id-2947067.html <%@ Page Title="" Language= ...

  2. HTML 5 Canvas

    HTML 5 Canvas   HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像. <canvas id="myCanvas" width=&q ...

  3. cmd中无法运行svn命令

    Svn 不是内部或外部命令,也不是可运行的程序 解决方法: 增加“svn安装目录/bin”,例如:C:\Program Files\TortoiseSVN\bin

  4. linux服务器之LVS、Nginx和HAProxy负载均衡器对比

    linux服务器之LVS.Nginx和HAProxy负载均衡器对比. LVS特点:  1.抗负载能力强,使用IP负载均衡技术,只做分发,所以LVS本身并没有多少流量产生:  2.稳定性.可靠性好,自身 ...

  5. char引发的血案

    char cc = 'j';cc = (char)(cc -32); //注意下,自动转型了System.out.println(cc);

  6. ASP.NET MVC4学习笔记路由系统实现

    一.路由实现 路由系统实际是一个实现了ASP.NET IHttpModule接口的模块,通过注册HttpApplication的PostResolveRequestCache 事件对Url路由处理.总 ...

  7. js控制div动起来

    代码: <html> <head> <title>让div动的测试</title> <script language="javascri ...

  8. SQLServer2005中查询语句的执行顺序

    SQLServer2005中查询语句的执行顺序   --1.from--2.on--3.outer(join)--4.where--5.group by--6.cube|rollup--7.havin ...

  9. MVC的Filters(拦截过滤)的Error页面,支持Ajax报错

    报错拦截过滤到error页面 [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, Inherited = true, A ...

  10. UIViewAnimationOptions swift 2

    UIView.animateWithDuration(0.5, delay: 0.5, usingSpringWithDamping: 0.5, initialSpringVelocity: 0.0, ...