把每条记录看成关于未知整数 x1,…,xp 的线性方程:D 是差,‘S‘ 是和。问题是判断整数解是否存在,以及解空间还剩几个自由度。
计量室要对 p 个样品的整数量值 x1,x2,…,xp 做交叉核对。仪器打出 e 条记录,每条只可能是下面两种之一:
D u v d:表示差关系 xu−xv=dS u v s:表示和关系 xu+xv=s量值必须是整数,可正可负可为零。请先判断这 e 条记录有没有一组整数解;若有,再问至少要实测多少个样品的量值,才能把全部 p 个量值都唯一定下来。一条记录里的两个下标可以相同。
第一行两个整数 p 和 e(1≤p≤100000,0≤e≤100000),表示样品数与记录数。
接下来 e 行,每行一个大写字母 D 或 S,随后三个整数 u,v,w(1≤u,v≤p,∣w∣≤1000000000)。字母为 D 时表示 xu−xv=w,为 S 时表示 xu+xv=w。
第一行输出 YES 或 NO,表示是否存在整数解。
第二行:若第一行是 YES,输出最少实测个数(可以为 0,表示记录本身已经唯一确定全部量值);若第一行是 NO,输出 -1。
输入
2 2
S 1 2 8
D 1 2 2
输出
YES
0
说明
x1+x2=8 且 x1−x2=2,解得 x1=5,x2=3,已经唯一,不必再测。
输入
1 1
S 1 1 5
输出
NO
-1
说明
2x1=5,不是整数,无解。
输入
3 2
D 1 2 1
D 2 3 1
输出
YES
1
说明
只有差关系,三个量由一个自由变量决定,实测任意一个即可推出其余。
D 或 S
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册