题意:给定n个带标号的正方形,标号要么是一个大写字母加一个+或-,要么是00,

当且仅当大写字母相同并且符号相反时可以连接,问你给定的能不能拼成一个无限大的的东西。

析:说实话,真心没有看出来是拓扑排序,后来知道是,可是还是不会写。

既然要拼成无限大,那么只要拼的时候拼出一个环来,又由于每个是无限多的,那么可以一直重复,

就能拼起来无限大的东西,把每个正方形看成一条边,那么不就是一个拓扑排序,看看能不能找到一个环么,

如果能找到,那么就可以,找不到,就不可以。注意的是正方形可以从四面都拼,所以要注意考虑全了,

刚开始,忘了,只考虑了两端,WA。把每个边都标记一下就好,相当于构造出一个图来。

代码如下:

#include <iostream>
#include <cstdio>
#include <vector>
#include <cstring> using namespace std;
const int maxn = 55;
int G[maxn][maxn], c[maxn];
char s[10]; int getid(char a, char b) { return (a - 'A')* 2 + ('+' == b ? 1 : 0); } void solve(char a1, char a2, char b1, char b2){
if('0' == a1 || '0' == b1) return ;
int u = getid(a1, a2) ^ 1;
int v = getid(b1, b2);
G[u][v] = 1;//构造边
G[v^1][u^1] = 1;//构造反向边
} bool dfs(int u){
c[u] = -1;//作标记,正在访问
for(int v = 0; v < 52; ++v) if(G[u][v]){
if(c[v] < 0) return false;//存在有向环
else if(!c[v] && !dfs(v)) return false;
}
c[u] = 1;
return true;
} bool toposort(){
memset(c, 0, sizeof(c));
for(int i = 0; i < 52; ++i)
if(!dfs(i)) return true;
return false;
} int main(){
int n;
while(scanf("%d", &n) == 1){
memset(G, 0, sizeof(G));
for(int i = 0; i < n; ++i){
scanf("%s", s);
solve(s[0], s[1], s[2], s[3]);//考虑全了
solve(s[4], s[5], s[6], s[7]);
solve(s[0], s[1], s[4], s[5]);
solve(s[0], s[1], s[6], s[7]);
solve(s[2], s[3], s[4], s[5]);
solve(s[2], s[3], s[6], s[7]);
}
if(toposort()) puts("unbounded");
else puts("bounded");
}
return 0;
}

UVa 1572 Self-Assembly (构造+拓扑排序。。。。。)的更多相关文章

  1. UVA - 12263 Rankings 模拟(拓扑排序)

    题意:1~n这n个数,给你一个初始的顺序,再告诉你那两个数的大小关系发生了变化,求变化后的 顺序,不存在则输出IMPOSSIBLE 思路:这题很遗憾没在比赛的时候过掉,结束后加了一行就AC了.题目真的 ...

  2. UVa 872 - Ordering 输出全拓扑排序

    本题要求输出所有拓扑排序的序列. 还好本题的数据量不是非常大.限制在26个大写英文字母,故此能够使用递归法输出. 这个递归输出所有解在Leetcode非常多这种题目的,不小心的话,还是非常难调试的. ...

  3. UVA - 10305 Ordering Tasks(拓扑排序)

    题意:给定优先关系进行拓扑排序. 分析:将入度为0的点加入优先队列,并将与之相连的点入度减1,若又有度数为0的点,继续加入优先队列,依次类推. #pragma comment(linker, &quo ...

  4. UVa 10305 Ordering Tasks【拓扑排序】

    题意:给出n件事情,m个二元组关系,求它们的拓扑序列 用的队列来做 #include<iostream> #include<cstdio> #include<cstrin ...

  5. Codeforces 919D Substring ( 拓扑排序 && DAG上的DP )

    题意 : 给出含有 N 个点 M 条边的图(可能不连通或者包含环),每个点都标有一个小写字母编号,然后问你有没有一条路径使得路径上重复字母个数最多的次数是多少次,例如图上有条路径的顶点标号顺序是  a ...

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

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

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

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

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

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

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

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

随机推荐

  1. egret 精简游戏项目

    新建一个游戏项目,我们可以删除resource文件夹下除了default.thm.json和default.res.json文件,一旦删除,当新建皮肤exml文件时会报错 还可以删除src文件夹里除了 ...

  2. 基于OpenGL编写一个简易的2D渲染框架-08 重构渲染器-整体架构

    事实上,前面编写的渲染器 Renderer 非常简陋,虽然能够进行一些简单的渲染,但是它并不能满足我们的要求. 当渲染粒子系统时,需要开启混合模式,但渲染其他顶点时却不需要开启混合模式.所以同时渲染粒 ...

  3. 前段开发-css-总结

    应用参考https://www.cnblogs.com/alice-bj/p/8972299.html CSS:层叠样式表(Cascading Style Sheets) 1.css的特征 一.css ...

  4. CStatic控件SS_NOTIFY属性

    SS_NOTIFY Sends the parent window STN_CLICKED, STN_DBLCLK, STN_DISABLE, and STN_ENABLE notification ...

  5. (1)shiro简介和第一个demo

    之前一直在用shiro开发,不过只是会使用,并没有深入了解,最近有时间学习了一下,把最近学习所得分享一下. shiro简介 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授 ...

  6. SOA (面向服务的架构)

    面向服务的体系结构,是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来.接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台.操作系统和编程语 ...

  7. oracle 理解执行计划

    ·BUFFER SORT是BUFFER却不是SORT 用AUTOTRACE查看执行的计划的同学常问到执行计划里的BUFFER SORT是什么意思,这里为什么要排序呢? BUFFER SORT不是一种排 ...

  8. SpringBoot yml properties文件

    一.在SpringBoot实现属性注入: 1).添加pom依赖jar包: 1 <!-- 支持 @ConfigurationProperties 注解 --> 2 <!-- https ...

  9. New Document (2)

    #Markdown 语法说明 (简体中文版) / (点击查看快速入门) ##概述 ###宗旨 兼容 HTML 特殊字符自动转换 区块元素 段落和换行 标题 区块引用 列表 代码区块 分隔线 区段元素 ...

  10. css:多个div在同一行显示

    使用float:left,也可以使用display : inline-block,可以使多个div在同一行显示. 示例如下: <div class="search_row"& ...