UVA - 11902 (有向图的关节点)
来源:互联网 发布:腾讯企业邮箱域名管理 编辑:程序博客网 时间:2024/05/09 10:20
链接 :
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=18888
题意 : 一个有向图,如果从0点出发到达某一点必须经过某些点 题目就是求出这些点。
点数不多 可以删点然后dfs搜索,之前能搜到的点 但是删了该点之后搜不到了 那么这个删点就是从起始点搜不到的必经之路。
#include <algorithm>#include <iostream>#include <sstream>#include <cstring>#include <cstdio>#include <vector>#include <stack>#include <cmath>#include <queue>#include <map>#include <set>#define lson o<<1,l,m#define rson o<<1|1,m+1,r#define mem(a) memset(a,0,sizeof(a))typedef long long ll;const int N = 105;const int M = 10005;const ll mod = 1000000009;using namespace std;int n, T;int g[N][N], a[N][N];int v1[N], v2[N];int ans[N][N];char out[N*3][N*3];void dfs(int u) {if(v1[u]) return;v1[u] = 1;for(int i = 1; i <= n; i++) {if(g[u][i] && v1[i] == 0) dfs(i);}}void del(int u) {mem(g[u]);}void rec(int u) {memcpy(g[u], a[u], sizeof(a[u]));}void solve(int u) {mem(v1);dfs(1);for(int i = 1; i <= n; i++) {if(v1[i] == 0 && v2[i] == 1) {ans[u][i] = 1;}}}int main() {//freopen("in.txt", "r", stdin);cin >> T;int ca = 1;while(T--) {cin >> n;for(int i = 1; i <= n; i++) {for(int j = 1; j <= n; j++) {scanf("%d", &g[i][j]);a[i][j] = g[i][j];}}mem(v1);dfs(1);mem(ans);for(int i = 1; i <= n; ++i) if(v1[i]) {ans[1][i] = 1;ans[i][i] = 1;}memcpy(v2, v1, sizeof(v1));for(int i = 2; i <= n; i++) {del(i);solve(i);rec(i);}mem(out);for(int i = 1; i <= n+n+1; i++) {if(i & 1) {out[i][1] = out[i][n+n+1] = '+';for(int j = 2; j <= n+n; j++) {out[i][j] = '-';}} else {for(int j = 1; j <= n+n+1; j++) {if(j & 1) {out[i][j] = '|';} else {if(ans[i/2][j/2]) {out[i][j] = 'Y';} else out[i][j] = 'N';}}}}printf("Case %d:\n", ca++);for(int i = 1; i <= n+n+1; i++) {for(int j = 1; j <= n+n+1; j++) {printf("%c", out[i][j]);}puts("");}//for(int i = 1; i <= n; i++) {//for(int j = 1; j <= n; j++) {//printf("%d ", ans[i][j]);//}//puts("");//}puts("");}return 0;}
1 0
- UVA - 11902 (有向图的关节点)
- 无向图的割点(关节点)
- 求无向图的关节点算法
- 求解无向连通图的关节点
- 数据结构_图_求无向图的关节点
- poj 1523 SPF(无向图求关节点)
- poj 1523 SPF 无向图关节点
- 数据结构---图(求关节点)
- 有向图的欧拉道路 UVA
- Floyd有向图的传递闭包-UVA
- 求连通图的割点(关节点)问题
- 求连通图的关节点(割点)--C语言
- UVA 558 Wormholes(有向图的传递闭包)
- 有向边的拓扑排序 UVA
- 算法导论 ch22 无向图 割(关节点)
- poj1523 SPF 无向连通图 求割点 关节点 tarjan算法
- 【数据结构】算法7.10-7.11 DFS求无向图关节点
- C++代码,数据结构-连通图的关节点
- 【C语言】进度条实现
- 黑马程序员——Java基础--- 多线程
- android,内存优化详解
- Hello,CSDN!
- Android开发-再按一次退出程序 连续按两次退出程序
- UVA - 11902 (有向图的关节点)
- 那些狗血到我的题TAT
- Android 获取并显示远程图片 Picasso框架的使用(一)
- 练习-codevs-1576最长严格上升子序列
- 三菱plc编程软件gx+developer安装教程
- MATLAB与C/C++混合编程之MATLAB调用C程序
- android从零开始(二)发送短信
- Drawable、Bitmap、byte[]之间的转换
- UVA - 459 (并查集)