一个矩阵,自乘无限次后能否全为正数?

如果n比较小,可以二分一下,但是这里n很大,乘一次都无法接受

可以考虑实际含义:矩阵看成邻接矩阵,那么0就是没有边,其余就是有边。

我们知道邻接矩阵自乘k次就相当于在原图走k步,无限次后是否有0?也就是图能否强连通。

判断就好,整个是环的情况题目限制不存在。

#include<iostream>
#include<cstdio> using namespace std; const int MAXN=; struct Edge{
int next,to;
}e[MAXN*MAXN*];
int ecnt,head[MAXN];
inline void add(int x,int y){
e[++ecnt].to = y;
e[ecnt].next = head[x];
head[x] = ecnt;
} inline int rd(){
int ret=,f=;char c;
while(c=getchar(),!isdigit(c))f=c=='-'?-:;
while(isdigit(c))ret=ret*+c-'',c=getchar();
return ret*f;
} int n; int bl[MAXN],cnt;
int ins[MAXN],sta[MAXN],top;
int dfn[MAXN],low[MAXN],tot;
void tarjan(int x){
dfn[x]=low[x]=++tot;ins[x]=;sta[++top]=x;
for(int i=head[x];i;i=e[i].next){
int v=e[i].to;
// cout<<x<<" "<<v<<endl<<endl;
if(!dfn[v]){
tarjan(v);
low[x]=min(low[x],low[v]);
}else if(ins[v]){
low[x]=min(low[x],dfn[v]);
}
}
if(dfn[x]==low[x]){
int elm;cnt++;
do{
elm = sta[top--];
ins[elm] = false;
bl[elm] = cnt;
}while(elm != x);
}
} int main(){
n=rd();int x;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
if(rd()) add(i,j);
for(int i=;i<=n;i++) if(!dfn[i]) tarjan(i);
if(cnt!=) return puts("NO"),;
puts("YES");
return ;
}

最新文章

  1. [No00003B]string格式的日期时间字符串转为DateTime类型
  2. 2016.8.14 HTML5重要标签及其属性学习
  3. 【LEETCODE OJ】Single Number
  4. javascript获取以及设置光标位置
  5. Ogre1.8.1编译时大量warning的问题
  6. js学习之道:表单验证公共js
  7. ThinkPHP中视图模型详解.
  8. 基于CAShapeLayer和贝塞尔曲线的圆形进度条动画
  9. css基础语法二(常用文本与背景属性)
  10. Linux 系统裁剪笔记 软盘2
  11. javafx--tableView笔记-----tableView里已经填充了实体类数据但是很狗血地显示不出来
  12. box-sizing (摘录)
  13. vue 中axios 的基本配置和基本概念
  14. Practical Node.js (2018版) 第10章:Getting Node.js Apps Production Ready
  15. git commit之后,想撤销commit
  16. (转)Introduction to Gradient Descent Algorithm (along with variants) in Machine Learning
  17. sqlserver 数据迁移
  18. (转)在SDL工程中让SDL_ttf渲染汉字
  19. Python Django 之 Views HttpRequest HttpReponse
  20. java MessageFormat.format 用法

热门文章

  1. POJ1700 【经典过河问题,贪心】
  2. 几题LCS后的小总结
  3. 无向图的边双连通分量(EBC)
  4. Jquery | 基础 | 慕课网 | 基本筛选选择器
  5. Fiddler抓取HTTPS设置
  6. cordova 安卓项目打包 release安装包
  7. EOJ Monthly
  8. 500 Keyboard Row 键盘行
  9. 474 Ones and Zeroes 一和零
  10. 为localhost添加https