洛谷P1993: 题意: 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共m个),以下列三种形式描述: 农场a比农场b至少多种植了c个单位的作物, 农场a比农场b至多多种植了c个单位的作物, 农场a与农场b种植的作物数一样多。 但是,由于小K的记忆有些偏差,所以他想要知道存不存在一种情况,使得农场的种植作物数量与他记忆中的所有信息吻合。 思路:画了下划线的三句话提示我们这题要用差分约束系统 记val[a]表示第a个农场中了几枝花,从a到b连一条权值为c的边表示 ,则 若某行输入为1 a b c,则加入边 若某行输入为2 a b c,则加入边 和 若某行输入为3 a b,则加入边 和 建图成功后,用spfa跑一遍最长路,若有正环,输出No,否则输出Yes 提示:全图不一定强联通,所以每个强联通分量都要跑一遍最长路,若每个强联通分量存在最长路,就输出No #include <bits/stdc++.h> using namespace std; const int N=10100; struct node{ int next,to,w; }e[N<<1];int h[N],tot; inline void add(int a,int b,int c){ e[++tot]=(node){h[a],b,c};h[a]