uva1572 Self-Assembly 拓扑排序 提炼有向图模型
来源:互联网 发布:明基wit护眼灯 知乎 编辑:程序博客网 时间:2024/06/05 05:44
- 拓扑排序
- 利用2n,2n+1存储a+,a-这类型增加的状态。
- 有向图模型的提炼。
- 2n+1^1 = 2n的转换
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=67677
题解:
由于正方形是无限的,所以把一个矩形处理成成一个口进入的3个有向节点,因为只要有一个结点构成环则无限。
代码转自网络,注释中额外加入了一些自己的见解。
#include<cstdio>#include<cstring>int G[60][60];int vis[60];//把A+-变成2n和2n+1,非常重要的存储思想int ID(char x, char y);//利用(2n)^1 = 2n+1 , (2n+1)^1 = 2n 来反转void cont(char x1,char x2,char y1,char y2);bool dfs(int u);bool cyc();int main(){ int n; while(scanf("%d",&n) == 1 && n) { memset(G,'\0',sizeof(G)); memset(vis,0,sizeof(vis)); for(int i = 0 ; i < n ; i++) { char s[9]; scanf("%s",s); for(int j = 0 ; j < 4 ; j++)//有向图模型的提炼 for(int k = 0 ; k < 4 ; k++) if(j != k) //对每个边都与其他非自身的边连接 cont(s[j*2],s[j*2+1],s[k*2],s[k*2+1]); } if(cyc()) puts("unbounded");//这个才是无限的。。。 else puts("bounded"); } return 0;}int ID(char x, char y){ return (x-'A')*2 + (y == '+' ? 0 : 1);}void cont(char x1,char x2,char y1,char y2)//模型的抽象,转化为新的有向图并存储。{ if(x1 == '0' || y1 == '0') return ; int u = ID(x1,x2)^1 ; int v = ID(y1,y2); G[u][v]++;}bool dfs(int u){ vis[u] = -1; for(int i = 0 ; i < 52 ; i++) { if(G[u][i]) { if(vis[i] < 0) return true; else if(!vis[i] && dfs(i)) return true; } } vis[u] = 1; return false;}bool cyc()//配合dfs进行遍历{ for(int i = 0 ; i < 52 ; i++) if(!vis[i] && dfs(i)) return true; return false;}
0 0
- uva1572 Self-Assembly 拓扑排序 提炼有向图模型
- 拓扑排序--uva1572 Self-Assembly
- Uva1572 Self-Assembly 【建立图论模型拓扑排序】【例题6-19】
- UVa 1572 - Self-Assembly <图论模型+拓扑排序>
- UVa1572 Self-Assembly
- Uva1572——Self-Assembly
- UVA1572 Self_Assembly-拓扑排序
- 有向图--拓扑排序
- UVa 1572 - Self-Assembly(拓扑排序)
- 【拓扑排序】 UVALive 6393 Self-Assembly
- [LA 6393]Self-Assembly(拓扑排序)
- UVA 1572 Self-Assembly 拓扑排序
- UVA 1572Self-Assembly(拓扑排序)
- 有向图的拓扑排序
- 有向图的拓扑排序
- C#有向图拓扑排序
- 有向图的拓扑排序C++
- 图论-有向图的拓扑排序
- uva1599 bfs双向遍历 利用数组保存中间结果
- uva11478
- 控制器的生命周期
- 原生Js回到顶部效果
- 关于Device tree的问题
- uva1572 Self-Assembly 拓扑排序 提炼有向图模型
- 20160805 笔记之自定义表单
- 【华为 OJ】记负均正2
- IO流学习总结
- RGB YUV
- css-属性前的 -webkit, -moz
- centos6.5源码安装Apache
- npm install 错误
- uva1451 平均值 数形结合