如果存在三角恋输出yes;
题意:1表示别人喜欢他;则他的如度就加一;
然后用拓扑排序;
只要没有入度为零的点,就组成了三角恋,则输出yes;
#include"stdio.h"
#include"string.h"
int degree[3000];
char map[3000][3000];
int n;
int posort()
{
int i,j,k;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(map[i][j]=='1')
degree[j]++;
for(i=0;i<n;i++)
{
j=0;
while(degree[j]!=0)
j++;
if(j==n)
return 0;
else
{
degree[j]--;
for(k=0;k<n;k++)
if(map[j][k]=='1')
degree[k]--;
}
}
return 1;
}
int main()
{
int k,i,j,r=1;
scanf("%d",&k);
while(k--)
{
scanf("%d",&n);
memset(degree,0,sizeof(degree));
for(i=0;i<n;i++)
scanf("%s",map[i]);
printf("Case #%d: ",r++);
if(!posort())
printf("Yes\n");
else
printf("No\n");
}
return 0;
}