拓扑排序,以边上标号为点,正方形为边,拓扑图中存在有向环时unbounded,否则bounded;

注意:仔细处理输入;

     遍历一个点时,下一次遍历拼上的下一个方形边;即假设遍历到 A+ 时,下次从 A- 开始遍历;

 #include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; int n;
int g[][];
int visit[]; int dfs (int u){
visit[u]=-;
if (u%)
u--;
else u++;
for (int i=;i<;i++)
if (g[u][i]){
if (visit[i]<)
return false ;
else if (!visit[i]&&!dfs (i))
return false ;
}
if (u%) u--;else u++;
visit[u]=;
return true ;
} int topo (){
for (int u=;u<;u++)
if (!visit[u]&&!dfs (u))
return false ;
return true ;
} int main (){
while (~scanf ("%d",&n)){
memset (visit,,sizeof visit);
memset (g,,sizeof g);
for (int i=;i<n;i++){
char s[];
scanf ("%s",s);
for (int j=;j<;j++){
if (s[j*]=='')
continue ;
int tempj=(s[j*]-'A')*;
//g[tempj][tempj+1]=g[tempj+1][tempj]=1;
tempj+=s[j*+]=='+'?:;
for (int o=j+;o<;o++){
if (s[o*]=='')
continue ;
int tempo=(s[o*]-'A')*;
tempo+=s[o*+]=='+'?:;
g[tempj][tempo]=g[tempo][tempj]=;
}
}
}
//for (int i=0;i<52;i++){for (int j=0;j<52;j++){cout<<g[i][j];}cout<<endl;}
if (topo ())
printf ("bounded\n");
else printf ("unbounded\n");
}
return ;
}

UVA 1572 Self-Assembly的更多相关文章

  1. UVA 1572 Self-Assembly(拓扑排序)

    1 // 把一个图的所有结点排序,使得每一条有向边(u,v)对应的u都排在v的前面. 2 // 在图论中,这个问题称为拓扑排序.(toposort) 3 // 不难发现:如果图中存在有向环,则不存在拓 ...

  2. uva 1572 self-assembly ——yhx

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAxQAAANxCAYAAAB9uv94AAAgAElEQVR4nOxdPW7tOpLWFrQGJb72vI ...

  3. UVa 1572 (拓扑排序) Self-Assembly

    题意: 有n种正放形,每种正方形的数量可视为无限多.已知边与边之间的结合规则,而且正方形可以任意旋转和反转,问这n中正方形是否可以拼成无限大的图案. 分析: 首先因为可以旋转和反转,所以可以保证在拼接 ...

  4. UVa 1572 Self-Assembly (拓扑排序)

    题目链接: https://cn.vjudge.net/problem/UVA-1572 Automatic Chemical Manufacturing is experimenting with ...

  5. UVa 1572 Self-Assembly (构造+拓扑排序。。。。。)

    题意:给定n个带标号的正方形,标号要么是一个大写字母加一个+或-,要么是00, 当且仅当大写字母相同并且符号相反时可以连接,问你给定的能不能拼成一个无限大的的东西. 析:说实话,真心没有看出来是拓扑排 ...

  6. Uva 1572 自组合

    贴个源码// UVa1572 Self-Assembly // Rujia Liu #include<cstdio> #include<cstring> #include< ...

  7. 【例题 6-19 UVA - 1572】Self-Assembly

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 旋转和翻转,会发现. 如果可以顺着某个方向一直放的话. 总是能转换成往下或者往右连的. 则只要能够出现一个连接顺序的循环,则总是有解 ...

  8. uvalive 6393(uva 1572) Self-Assembly 拓扑排序

    题意: 给出一些正方形,这些正方形的每一条边都有一个标号.这些标号有两种形式:1.一个大写字母+一个加减号(如:A+, B-, A-......), 2.两个0(如:00):这些正方形能够任意翻转和旋 ...

  9. UVA - 1572 Self-Assembly(图论模型+拓扑排序)

    题意:判断利用给出的正方形是否能拼接出无限延伸的结构. 分析:正方形上的字母看做点,正方形看做有向边. 例如: 若上下两个正方形能拼接,需要B+~C+是个有向边. 对输入的处理是:把A+,A-分别映射 ...

随机推荐

  1. win7 tomcat

    前提需要有java环境 cmd 1- 下载tomcat http://tomcat.apache.org/ download Tomcat7.0 2- 配置环境变量 CATALINA_HOME C:\ ...

  2. npm install Error:EPROTO: protocol error, symlink '../mime/cli.js' -> '/vagrant/src/nodejs/node_modules/express/node_modules/send/node_modules/.bin/mime'

    我在ubuntu上使用npm安装依赖是出现下面错误: npm ERR! Linux 3.13.0-101-genericnpm ERR! argv "/usr/bin/nodejs" ...

  3. 【3】python核心编程 第六章-序列:字符串、列表和元组

    1.序列类型操作符 序列操作符 作用 seq[ind] 获得下标为ind 的元素 seq[ind1:ind2] 获得下标从ind1 到ind2 间的元素集合 seq * expr 序列重复expr 次 ...

  4. SQL触发器学习

      简介 触发器是一种特殊类型的存储过程.触发器分为: DML( 数据操纵语言 Data Manipulation Language)触发器:数据库中表或视图的数据更改时触发,包括insert,upd ...

  5. SCSI磁盘标准的架构与文档

    来自scsi标准的官方网站http://t10.org/,具体的文档可以去浏览官方网站. (*) This chart reflects the currently approved SCSI pro ...

  6. C# Exception类

    一.异常类 1.在C#中所有的异常都是使用一个异常类型的示例对象表示的,这些异常类型都是继承自System.Exception类型,或者直接使用System.Exception类型的实例对象: 2.在 ...

  7. C++对象模型浅析

    本文仅代表博主自己对C++内存对象模型的一点理解,如果文中有 理解偏差和不准确的地方,希望各位大大提出,我好及时改正. 本博文只对博主自己负责,不对任何人负责. 就如<深度探索C++对象模型&g ...

  8. 基于spark的plsa实现

    PLSA.py # coding:utf8 from pyspark import SparkContext from pyspark import RDD import numpy as np fr ...

  9. Struts2(五)——核心拦截器

    Struts框架一共为我们提供了35个拦截器,其中默认的拦截器有18个,框架访问action的异常处理,配置信息处理,转发重定向选择,上传等等等等,都是这18个拦截器中设置的,起着非比寻常的作用.而这 ...

  10. convention-plugin

    1.官方介绍的地址: http://struts.apache.org/2.1.6/docs/convention-plugin.html 2.struts.xml文件配置 只挑选几个重要的常量说明: ...