HDU 4324题Triangle LOVE(拓扑排序)

来源:互联网 发布:淘宝中详情页上的套餐 编辑:程序博客网 时间:2024/05/19 15:41

题目链接~~> 

     刚学习了拓扑排序就拿这个题试了一试,结果。。。。开始时居然用了两个for循环加个scanf("%d",&g[i][j]),晕死啊!!!解决了这个后很快写完,也很快TLE了!想来老半天剪枝但是这题真没法剪。。。。最后参考了一下别人代码只有在输入时的scanf("%s",g[i]);不同~~~改了后AC,无语。

代码:

#include<stdio.h>#include<string.h>int topo[2003],n;char g[2002][2003];int toposort(){    int f=0;         for(int i=0;i<n;i++)         {                 f=0;             for(int j=0;j<n;j++)                if(topo[j]==0)                {                       f=1;                       topo[j]=-1;                    for(int k=0;k<n;k++)                       if(g[j][k]=='1')                       {                           topo[k]--;                       }                      break;                 }                if(f==0)                    return 0;         }         return 1;}int main(){    int q=1,T,i,j;     scanf("%d",&T);     while(T--)     {        memset(topo,0,sizeof(topo));        scanf("%d",&n);        for(i=0;i<n;i++)          {              scanf("%s",g[i]);              for(j=0;j<n;j++)              {                    if(g[i][j]=='1')                  {                       topo[j]++;                  }              }          }          if(toposort())                  printf("Case #%d: No\n",q++);          else                  printf("Case #%d: Yes\n",q++);    }    return 0;}


 

原创粉丝点击