Codeforces Round #236 (Div. 2) E. Strictly Positive Matrix 强连通
来源:互联网 发布:申通快递单打印软件 编辑:程序博客网 时间:2024/04/19 19:21
题目大概意思是给定一个矩阵A,每个元素都非负,主对角线上元素大于0,问是否存在常数k,使得A的k次幂的每个元素都大于0。
由A的k次幂联想到离散数学中的可达性矩阵,即问是否存在常数k,使得任意两点之间都存在长度为k的路径,因为主对角线上严格大于0,也就是说有自环,所以只要该图是强联通的即可满足,因为若任意两点之间都能走到,那么配合自环就能找到一个共同的长度k。
#include<cstdio>#include<algorithm>#include<vector>#include<cstring>#include<stack>using namespace std;const int maxn = 2000 + 10;vector<int> G[maxn], G2[maxn];vector<int> S;int vis[maxn], sccno[maxn], scc_cnt;int max(int a,int b){ if(a>b) return a; else return b;}void dfs1(int u){ if(vis[u]) return; vis[u] = 1; for(int i = 0; i < G[u].size(); i++) dfs1(G[u][i]); S.push_back(u);}void dfs2(int u){ if(sccno[u]) return; sccno[u] = scc_cnt; for(int i = 0; i < G2[u].size(); i++) dfs2(G2[u][i]);}void find_scc(int n){ int i; scc_cnt = 0; S.clear(); memset(sccno, 0, sizeof(sccno)); memset(vis, 0, sizeof(vis)); for(i = 0; i < n; i++) dfs1(i); for(i = n-1; i >= 0; i--) if(!sccno[S[i]]) { scc_cnt++; dfs2(S[i]); }}int main(){ int i,j; int n,x; scanf("%d",&n); for(i=0;i<n;i++) for(j=0;j<n;j++) { scanf("%d",&x); if(x!=0) { G[i].push_back(j); G2[j].push_back(i); } } find_scc(n); if(scc_cnt==1) printf("YES\n"); else printf("NO\n"); return 0;}
0 0
- Codeforces Round #236 (Div. 2) E. Strictly Positive Matrix 强连通
- Codeforces Round #236 (Div. 2) E. Strictly Positive Matrix
- CF DIV2 236E Strictly Positive Matrix(强连通)
- [矩阵乘法转图论 强连通] Codeforces 403C #236 (Div. 1) C. Strictly Positive Matrix
- CF(Strictly Positive Matrix) 强连通分量
- CodeForces 402E Strictly Positive Matrix
- Strictly Positive Matrix CodeForces
- Codeforces Round #Pi (Div. 2) E. President and Roads (最短路+强连通求割边)
- Codeforces Round #236 (Div. 2)(强联通)
- Codeforces Round #244 (Div. 2)(强连通分量,后缀数组)
- Codeforces Round #267 Div.2 D Fedor and Essay -- 强连通 DFS
- Codeforces Round #286 (Div. 2) D. Mr. Kitayuta's Technology 强连通分量 有向图求环
- [Codeforces Round #369 (Div. 2)D. Directed Roads]Tarjan强连通分量+组合计数
- Codeforces Round #244 (Div. 2) 427C Checkposts (强连通分量 tarjan模板)
- cf 236 div2 E Strictly Positive Matrix 矩阵阶乘和图上路径(计数)(可达)(最优值)问题
- Codeforces Round #213 (Div. 2) C Matrix
- Codeforces 405E Codeforces Round #238 (Div. 2)E
- Codeforces Round #103 (Div. 2) E题
- adb pull 时报错device not found
- Java8-本地缓存
- 【Android】任务和返回栈(tasks and back stack)
- php蜘蛛正常抓取,用户跳转指定页面
- 复杂的分页查询
- Codeforces Round #236 (Div. 2) E. Strictly Positive Matrix 强连通
- Build相关属性和调用系统信息的方法
- 状态模式与状态图
- uitableview学习
- js 添加事件 attachEvent 和 addEventListener 的用法
- 修改boot.img
- 探究如何整合 GLib Main Event Loop 和 Node.js 的 libuv
- Windows Phone 8.1 系列文章索引
- android高分段进阶攻略(8)音乐播放器代码实现一SlidingDrawer实现