hdu4324

来源:互联网 发布:手机网络赚钱资源 编辑:程序博客网 时间:2024/05/01 13:00
/*
分析:
    拓扑排序。
    深搜啊什么的都行。


                             2012-12-13
*/








#include"stdio.h"#include"string.h"#include"stdlib.h"#include"queue"#define N 2011using namespace std;int n;char map[N][N];int indegree[N];struct Eage{int from,to,next;}eage[N*N/2];int tot,head[N];void add(int a,int b){eage[tot].from=a;eage[tot].to=b;eage[tot].next=head[a];head[a]=tot++;}void get_map(){int i,l;tot=0;memset(head,-1,sizeof(head));memset(indegree,0,sizeof(indegree));for(i=0;i<n;i++){scanf("%s",&map[i]);for(l=0;map[i][l];l++)if(map[i][l]=='1'){add(i,l);indegree[l]++;}}}int topsort(){int i,j;int k=0;int flag;while(k<n){flag=0;for(i=0;i<n;i++){if(indegree[i])continue;k++;flag=1;indegree[i]--;for(j=head[i];j!=-1;j=eage[j].next)indegree[eage[j].to]--;}if(!flag)return 1;}return 0;}int main(){int T,Case;int ans;scanf("%d",&T);for(Case=1;Case<=T;Case++){scanf("%d",&n);get_map();ans=topsort();if(ans)printf("Case #%d: Yes\n",Case);elseprintf("Case #%d: No\n",Case);}return 0;}