HDU 4324题Triangle LOVE(拓扑排序)

举报
Linux猿 发表于 2021/08/05 23:54:29 2021/08/05
【摘要】 题目链接~~>       刚学习了拓扑排序就拿这个题试了一试,结果。。。。开始时居然用了两个for循环加个scanf("%d",&g[i][j]),晕死啊!!!解决了这个后很快写完,也很快TLE了!想来老半天剪枝但是这题真没法剪。。。。最后参考了一下别人代码只有在输入时的scanf("%s",g[i]);不...

题目链接~~> 

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

代码:


  
  1. #include<stdio.h>
  2. #include<string.h>
  3. int topo[2003],n;
  4. char g[2002][2003];
  5. int toposort()
  6. {
  7. int f=0;
  8. for(int i=0;i<n;i++)
  9. {
  10. f=0;
  11. for(int j=0;j<n;j++)
  12. if(topo[j]==0)
  13. {
  14. f=1;
  15. topo[j]=-1;
  16. for(int k=0;k<n;k++)
  17. if(g[j][k]=='1')
  18. {
  19. topo[k]--;
  20. }
  21. break;
  22. }
  23. if(f==0)
  24. return 0;
  25. }
  26. return 1;
  27. }
  28. int main()
  29. {
  30. int q=1,T,i,j;
  31. scanf("%d",&T);
  32. while(T--)
  33. {
  34. memset(topo,0,sizeof(topo));
  35. scanf("%d",&n);
  36. for(i=0;i<n;i++)
  37. {
  38. scanf("%s",g[i]);
  39. for(j=0;j<n;j++)
  40. {
  41. if(g[i][j]=='1')
  42. {
  43. topo[j]++;
  44. }
  45. }
  46. }
  47. if(toposort())
  48. printf("Case #%d: No\n",q++);
  49. else
  50. printf("Case #%d: Yes\n",q++);
  51. }
  52. return 0;
  53. }


 

文章来源: blog.csdn.net,作者:Linux猿,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/nyist_zxp/article/details/9411513

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。