首先认识一下01邻接矩阵k次幂的意义:经过k条边(x,y)之间的路径条数

所以可以把矩阵当成邻接矩阵,全是>0的话意味着两两之间都能相连,也就是整个都要在一个强连通分量里,所以直接tarjan染色,如果只有一个色块的话就是YES否则都是NO(其实应该能更简单一些,不过tarjan比较顺手)

还有就是我没仔细看题判了对角巷为0就NO结果WA……

  1. #include<iostream>
  2. #include<cstdio>
  3. using namespace std;
  4. const int N=2005;
  5. int n,h[N],cnt,low[N],dfn[N],tot,s[N],top,col;
  6. bool v[N];
  7. bool f;
  8. struct qwe
  9. {
  10. int ne,to;
  11. }e[N*N];
  12. int read()
  13. {
  14. int r=0,f=1;
  15. char p=getchar();
  16. while(p>'9'||p<'0')
  17. {
  18. if(p=='-')
  19. f=-1;
  20. p=getchar();
  21. }
  22. while(p>='0'&&p<='9')
  23. {
  24. r=r*10+p-48;
  25. p=getchar();
  26. }
  27. return r*f;
  28. }
  29. void add(int u,int v)
  30. {
  31. cnt++;
  32. e[cnt].ne=h[u];
  33. e[cnt].to=v;
  34. h[u]=cnt;
  35. }
  36. void tarjan(int u)
  37. {
  38. dfn[u]=low[u]=++tot;
  39. v[s[++top]=u]=1;
  40. for(int i=h[u];i;i=e[i].ne)
  41. {
  42. if(!dfn[e[i].to])
  43. {
  44. tarjan(e[i].to);
  45. low[u]=min(low[u],low[e[i].to]);
  46. }
  47. else if(v[e[i].to])
  48. low[u]=min(low[u],dfn[e[i].to]);
  49. }
  50. if(dfn[u]==low[u])
  51. {
  52. col++;
  53. while(s[top]!=u)
  54. v[s[top--]]=0;
  55. v[s[top--]]=0;
  56. }
  57. }
  58. int main()
  59. {
  60. n=read();
  61. for(int i=1;i<=n;i++)
  62. for(int j=1;j<=n;j++)
  63. {
  64. int x=read();
  65. if(i!=j&&x)
  66. add(i,j);
  67. }
  68. for(int i=1;i<=n;i++)
  69. if(!dfn[i])
  70. tarjan(i);
  71. if(col==1)
  72. puts("YES");
  73. else
  74. puts("NO");
  75. return 0;
  76. }

codeforces 402E - Strictly Positive Matrix【tarjan】的更多相关文章

  1. codeforces 949C - Data Center Maintenance【tarjan】

    首先转换图论模型,把某个客户一个终端的维修时间(+1)%h之后和另一个终端维修时间一样,这样的两个终端连一条有向边,表示推后一个终端就必须推后另一个 然后tarjan缩点,一个scc里的终端是要一起推 ...

  2. Codeforces Round #236 (Div. 2)E. Strictly Positive Matrix(402E)

    E. Strictly Positive Matrix   You have matrix a of size n × n. Let's number the rows of the matrix f ...

  3. CodeForces 402 E Strictly Positive Matrix

    Strictly Positive Matrix 题解: 如果原来的 a[i][j] = 0, 现要 a[i][j] = 1, 那么等于 sum{a[i][k] + a[k][j]} > 1. ...

  4. 28. Search a 2D Matrix 【easy】

    28. Search a 2D Matrix [easy] Write an efficient algorithm that searches for a value in an mx n matr ...

  5. [CodeForces - 1225E]Rock Is Push 【dp】【前缀和】

    [CodeForces - 1225E]Rock Is Push [dp][前缀和] 标签:题解 codeforces题解 dp 前缀和 题目描述 Time limit 2000 ms Memory ...

  6. Codeforces 716B Complete the Word【模拟】 (Codeforces Round #372 (Div. 2))

    B. Complete the Word time limit per test 2 seconds memory limit per test 256 megabytes input standar ...

  7. 【tarjan】BZOJ2140-稳定婚姻

    又名NTR的故事 [题目大意] n对夫妻Bi和Gi.若某男Bi与某女Gj曾经交往过,他们有私奔的可能性.不妨设Bi和Gj旧情复燃,进而Bj会联系上了他的初恋情人Gk,以此递推.若在Bi和Gi离婚的前提 ...

  8. Codeforces Round #540 (Div. 3) C. Palindromic Matrix 【暴力】

    任意门:http://codeforces.com/contest/1118/problem/C C. Palindromic Matrix time limit per test 2 seconds ...

  9. codeforces 400 C Inna and Huge Candy Matrix【模拟】

    题意:给出一个矩形的三种操作,顺时针旋转,逆时针旋转,对称,给出原始坐标,再给出操作数,问最后得到的坐标 画一下模拟一下操作就可以找到规律了 #include<iostream> #inc ...

随机推荐

  1. 60. Spring Boot写后感【从零开始学Spring Boot】

    从2016年4月15日到2016年7月20日经历长达3个月的时间,[从零开始学习Spring Boot]系列就要告一段落了.国内的各种资源都比较乱或者是copy 来copy去的,错了也不加以修正下,导 ...

  2. 转盘抽奖 canvas & 抽奖 H5 源码

    转盘抽奖 canvas https://github.com/givebest/wechat-turntalbe-canvas https://blog.givebest.cn/GB-canvas-t ...

  3. mysql 判断索引是否存在,存在则删除再创建索引(分表) 存储过程

    1.分表5数据量大,执行所有分表修改,不包括5 CREATE PROCEDURE deleteIndex()BEGINDECLARE corpId CHAR (16);DECLARE flag INT ...

  4. 587. Erect the Fence

    Problem statement: There are some trees, where each tree is represented by (x,y) coordinate in a two ...

  5. 使用流的方式去进行post请求解决中文乱码问题返回xml格式

    /** * 请求post * @Title: getHttpURLConnection * @Description: TODO(这里用一句话描述这个方法的作用) * @param: @param u ...

  6. [bzoj2150]部落战争_二分图最小路径覆盖

    部落战争 bzoj-2150 题目大意:题目链接. 注释:略. 想法: 显然是最小路径覆盖,我们知道:二分图最小路径覆盖等于节点总数-最大匹配. 所以我们用匈牙利或者dinic跑出最大匹配,然后用总结 ...

  7. 利用Python爬虫实现百度网盘自动化添加资源

    事情的起因是这样的,由于我想找几部经典电影欣赏欣赏,于是便向某老司机寻求资源(我备注了需要正规视频,绝对不是他想的那种资源),然后他丢给了我一个视频资源网站,说是比较有名的视频资源网站.我信以为真,便 ...

  8. vi,vim的基本使用方法

    "i”插入 "/" 查找 "wq"保存退出 "q!"不保存退出

  9. day1--大数据概念,hadoop介绍,hdfs整体运行机制

    1.什么是大数据 基本概念 在互联网技术发展到现今阶段,大量日常.工作等事务产生的数据都已经信息化,人类产生的数据量相比以前有了爆炸式的增长,以前的传统的数据处理技术已经无法胜任,需求催生技术,一套用 ...

  10. openstack-wsgi的route中添加api流程具体解释(os-networks)添加

    感谢朋友支持本博客.欢迎共同探讨交流,因为能力和时间有限,错误之处在所难免.欢迎指正! 如有转载,请保留源作者博客信息. Better Me的博客:blog.csdn.net/tantexian 如需 ...