题目链接:http://codeforces.com/problemset/problem/402/E

  1. /**算法分析:
  2. 这道题考察了图论基本知识,就是传递闭包,可以构图用强联通分量来判断
  3. */
  4. #include<bits/stdc++.h>
  5. #define MAXN 2005
  6. #define PI acos(-1.0)
  7. #define REP(i,n) for(int i=0; i<n; i++)
  8. #define FOR(i,s,t) for(int i=s; i<=t; i++)
  9. #define mem(a,b) memset(a,b,sizeof(a))
  10. #define show(x) { cerr<<">>>"<<#x<<" = "<<x<<endl; }
  11. #define showtwo(x,y) { cerr<<">>>"<<#x<<"="<<x<<" "<<#y<<" = "<<y<<endl; }
  12. using namespace std;
  13.  
  14. bool G[MAXN][MAXN]; //正向图
  15. bool rG[MAXN][MAXN]; //反向图
  16. vector<int> s;
  17. bool vis[MAXN];
  18. int n;
  19.  
  20. void dfs(int u)
  21. {
  22. vis[u] = true;
  23. FOR(i,,n) if(G[u][i] && !vis[i])
  24. dfs(i);
  25. s.push_back(u);
  26. }
  27. void rdfs(int u)
  28. {
  29. vis[u] = true;
  30. FOR(i,,n) if(rG[u][i] && !vis[i])
  31. rdfs(i);
  32. }
  33. bool scc()
  34. {
  35. s.clear();
  36. mem(vis,); dfs();
  37. FOR(i,,n) if(!vis[i]) return false;
  38.  
  39. mem(vis,); rdfs(s[n-]);
  40. for(int i=n-;i>=; i--)
  41. if(!vis[s[i]]) return false;
  42. return true;
  43. }
  44.  
  45. int main()
  46. {
  47. //freopen("E:\\acm\\input.txt","r",stdin);
  48. mem(G,); mem(rG,);
  49. cin>>n;
  50. FOR(i,,n) FOR(j,,n)
  51. {
  52. int a; scanf("%d",&a);
  53. if(i == j) continue;
  54. if(a>) G[i][j] = true,rG[j][i] = true;
  55. }
  56. if(scc()) printf("YES\n");
  57. else printf("NO\n");
  58. }

CF402E Strictly Positive Matrix 传递闭包用强连通分量判断的更多相关文章

  1. CF402E Strictly Positive Matrix(矩阵,强联通分量)

    题意 给定一个 n∗n 的矩阵 A,每个元素都非负判断是否存在一个整数 k 使得 A^k 的所有元素 >0 n≤2000(矩阵中[i][i]保证为1) 题解 考虑矩阵$A*A$的意义 ,设得到的 ...

  2. [CF #236 (Div. 2) E] Strictly Positive Matrix(强联通分量)

    题目:http://codeforces.com/contest/402/problem/E 题意:给你一个矩阵a,判断是否存在k,使得a^k这个矩阵全部元素都大于0 分析:把矩阵当作01矩阵,超过1 ...

  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. 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 ...

  5. codeforces 402E - Strictly Positive Matrix【tarjan】

    首先认识一下01邻接矩阵k次幂的意义:经过k条边(x,y)之间的路径条数 所以可以把矩阵当成邻接矩阵,全是>0的话意味着两两之间都能相连,也就是整个都要在一个强连通分量里,所以直接tarjan染 ...

  6. [CF] 402 E. Strictly Positive Matrix

    一个矩阵,自乘无限次后能否全为正数? 如果n比较小,可以二分一下,但是这里n很大,乘一次都无法接受 可以考虑实际含义:矩阵看成邻接矩阵,那么0就是没有边,其余就是有边. 我们知道邻接矩阵自乘k次就相当 ...

  7. Ex3_15 判断图是否是一个强连通分量 判断点是否在汇点强连通分量中_十一次作业

    (a) 可以用图中的每一个顶点表示街道中的每个十字路口,由于街道都是单行的,所以图是有向图,若从一个十字路口都有一条合法的路线到另一个十字路口,则图是一个强连通图.即要验证的是图是否是一个强连通图. ...

  8. POJ1236Network of Schools[强连通分量|缩点]

    Network of Schools Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 16571   Accepted: 65 ...

  9. POJ 1236 Network of Schools(强连通分量/Tarjan缩点)

    传送门 Description A number of schools are connected to a computer network. Agreements have been develo ...

随机推荐

  1. 更改Keil工程名

    假设原工程名为A,需要改成B. 1, 在工程目录下,把A.vuopt和A.uvproj改成B.uvopt和B.uvproj. 2,删除其他A文件. 3,打开工程B.然后修改下面位置: Project ...

  2. UILabel 属性祥记

    创建label UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(20, 40, 280, 80)]; 设置背景色 label1. ...

  3. 告诉你KVC的一切-b

    KVC(Key-value coding)键值编码,单看这个名字可能不太好理解.其实翻译一下就很简单了,就是指iOS的开发中,可以允许开发者通过Key名直接访问对象的属性,或者给对象的属性赋值.而不需 ...

  4. 小米1S MIUI V5刷回V4教程

    V5确实很漂亮,但是1S只有1G的手机内存,确切说是760M左右的内存,所以运行V5卡的不行.解决小米手机刷回V4卡死在开机MI界面!! 于是,我想回到V4,虽然界面没有V5华丽,菜单没有V5扁平化, ...

  5. Android版:验证手机号码的正则表达式

    http://blog.csdn.net/dai_zhenliang/article/details/8186249 /** * 验证手机格式 */ public static boolean isM ...

  6. SQL Union和SQL Union All用法

    SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时,每 ...

  7. POJ 1364 King

    http://poj.org/problem?id=1364 题意 :给出一个序列a1,a2,a3,a4.....ai,......at ;然后给你一个不等式使得ai+a(i+1)+a(i+2)+.. ...

  8. 如何将CELERY放到后台执行?

    在作正式环境,这个是必须的. 于是找了两小时文档, 以下这个方法,相对来说好实现. 就是要注意supervisord.conf的目录存放位置. 放在DJANGO的PROJ目录下,是最佳位置. http ...

  9. Java使用socket实现两人聊天对话

    import java.io.*; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; /* ...

  10. 服务器部署_linuix下 一台nginx 多域名之二

    第二个需求: 1. 一台服务器部署了三个应用web1~web3对应三个域名:www.web1.com.www.web2.com.www.web3.com ,方法参照我另外一篇文章 2. 如果用非www ...