Problem Description
给定有限集上二元关系的关系矩阵,确定这个关系是否是偏序关系。
Input
多组测试数据,对于每组测试数据,第1行输入正整数n(1 <= n <= 100),第2行至第n+1行输入n行n列的关系矩阵。
Output
对于每组测试数据,若为偏序关系,则输出yes,反之,则输出no。
Sample Input
4 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 4 1 0 0 1 0 1 0 0 0 0 1 0 1 0 0 1
Sample Output
yes
no
#include <stdio.h> #include <stdlib.h> int main() { int a[101][101]; int k,i,j,n,flag; while(scanf("%d",&n)!=EOF) { flag=1; for(i=1;i<=n;i++) for(j=1;j<=n;j++) scanf("%d",&a[i][j]); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { if(i==j) { if(a[i][j]==0) { flag=0; break; } } else { if(a[i][j]==1) { if(a[j][i]==1) { flag=0; break; } for(k=1;k<=n;k++) { if(a[j][k]==1) { if(a[i][k]==0) { flag=0; break; } } } } } } if(flag==0) break; } if(flag==0) printf("no\n"); else printf("yes\n"); } return 0; }