如果存在阵列A(由整数组成)使得B [i] [j] = | A [i] - A [A],则维数N×N的矩阵B(由整数组成)被认为是好的。 j] |,其中| x |表示整数x的绝对值。
给出一个部分填充的矩阵B,其尺寸为N×N.该矩阵的条目的Q由0或1填充。您必须确定是否可以填充矩阵B的其余条目(条目可以用任何整数填充,不一定是0或1),这样得到的完全填充矩阵B就是好的。
实施例
输入4
2 2
1 1 0
1 2 1
2 3
1 1 0
1 2 1
2 1 0
3 2
2 2 0
2 3 1
3 3
1 2 1
2 3 1
1 3 1
输出
是
没有
是
没有
这是我的代码,但未通过一些测试。
include int main(){
int t; scanf("%d", &t); while(t--){ int n, q; scanf("%d %d", &n, &q); int arr[n][n]; int brr[n]; for(int i=0;i<n;i++){ brr[i]=1; for(int j=0;j<n;j++) arr[i][j]=-1; } int result=0; while(q--){ int l, r, val; scanf("%d %d %d", &l, &r, &val); arr[l-1][r-1]=val; arr[r-1][l-1]=val; if( abs(brr[l-1]-brr[r-1])!=val && l!=r){ brr[r-1]=brr[r-1]-val; } } for(int i=0;i<n;i++) printf("%d ", brr[i]); printf("\n"); for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(arr[i][j]!=-1 ){ if( abs(brr[i]-brr[j])==arr[i][j] && abs(brr[i]-brr[j])==arr[j][i]){ continue; } else{ result=1; break; } } } if(result) break; } if(result) printf("no\n"); else printf("yes\n"); } return 0; }