#include<iostream> #include<cstring> using namespace std; #define MAX 103 int g[MAX][MAX], n; bool hasCirle(){ int i,j,k;int d[MAX]; memset(d,0,sizeof(d)); for(i=0;i<n;++i){ for(j=0;j<n;++j){ d[i]+=g[j][i];//初始化 } } for(k=0;k<n;++k){ for(i=0;i<n;++i) if(d[i]==0)break;//找到一个入度为0的点 if(i==n)return true;//有圈 d[i]=-1; for(j=0;j<n;++j) d[j]-=g[i][j]; } return false;//无圈 } void init(){ int i,j; for(i=0;i<n;++i){ for(j=0;j<n;++j) cin>>g[i][j]; } } int main(int argc, char *argv[]) { while(cin>>n){ init(); if(hasCirle())cout<<"yes"<<endl; else cout<<"no"<<endl; } return 0; }