【例题 6-19 UVA - 1572】Self-Assembly
【链接】 我是链接,点我呀:)
【题意】
在这里输入题意
【题解】
旋转和翻转,会发现。
如果可以顺着某个方向一直放的话。
总是能转换成往下或者往右连的。
则只要能够出现一个连接顺序的循环,则总是有解的。
->转化成图论模型
如果一个正方形有A+
另外一个正方形有A-B+C+D-
那么从A+连3条边分别到B+,C+,D-
按照这样的方式连,如果能出现一个环的话,肯定是有解的
->有一条边,就已经说明能够新增加一个正方形了。
拓扑排序判环即可
【代码】
/*
1.Shoud it use long long ?
2.Have you ever test several sample(at least therr) yourself?
3.Can you promise that the solution is right? At least,the main ideal
4.use the puts("") or putchar() or printf and such things?
5.init the used array or any value?
*/
#include <bits/stdc++.h>
using namespace std;
const int N = 52;
const int NN = (int) 4e4;
int n,tot;
map <string,int> mmap;
int g[N+10][N+10],du[N+10],num;
bool bo[N+10];
vector <int> v[NN+100];
queue <int> dl;
int main(){
#ifdef LOCAL_DEFINE
freopen("F:\\c++source\\rush_in.txt", "r", stdin);
#endif
ios::sync_with_stdio(0),cin.tie(0);
for (char i = 'A';i <= 'Z';i++){
string temp ="";
temp+= i;temp += '-';
mmap[temp] = ++tot;
}
for (char i = 'A';i <= 'Z';i++){
string temp = "";
temp += i;temp += '+';
mmap[temp] = ++tot;
}
for (int i = 1;i <= NN;i++) v[i].resize(4);
while ( cin >> n ){
memset(g,0,sizeof g);
memset(du,0,sizeof du);
memset(bo,0,sizeof bo);
for (int ii = 1;ii <= n;ii++){
string s;
cin >> s;
string temp = "";
for (int i = 0,j = 0;i < 7;i+=2,j++){
temp = s.substr(i,2);
v[ii][j] = mmap[temp];
bo[v[ii][j]] = 1;
}
}
for (int ii = 1;ii <= n;ii++){
for (int i = 0;i < 4;i++){
if (v[ii][i]==0) continue;
int x = (v[ii][i]>26)?(v[ii][i]-26):(v[ii][i]+26);
if (!bo[x]) continue;
for (int j = 0;j <4 ;j++)
if (i!=j){
int y = v[ii][j];
if (y==0) continue;
if (!g[x][y]){
du[y]++;
}
g[x][y] = 1;
}
}
}
num = 52;
for (int i = 1;i <= 52;i++)
if (du[i]==0){
dl.push(i);
du[i] = -1;
}
while (!dl.empty()){
num--;
int x = dl.front();
dl.pop();
for (int i = 1;i <= 52;i++)
if (g[x][i]){
g[x][i] = g[i][x] = 0;
du[i]--;
if (du[i] == 0){
dl.push(i);
}
}
}
if (num!=0){
cout << "unbounded" << endl;
}else{
cout << "bounded" << endl;
}
}
return 0;
}
【例题 6-19 UVA - 1572】Self-Assembly的更多相关文章
- UVA 1572 Self-Assembly(拓扑排序)
1 // 把一个图的所有结点排序,使得每一条有向边(u,v)对应的u都排在v的前面. 2 // 在图论中,这个问题称为拓扑排序.(toposort) 3 // 不难发现:如果图中存在有向环,则不存在拓 ...
- uva 1572 self-assembly ——yhx
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAxQAAANxCAYAAAB9uv94AAAgAElEQVR4nOxdPW7tOpLWFrQGJb72vI ...
- UVa 1572 (拓扑排序) Self-Assembly
题意: 有n种正放形,每种正方形的数量可视为无限多.已知边与边之间的结合规则,而且正方形可以任意旋转和反转,问这n中正方形是否可以拼成无限大的图案. 分析: 首先因为可以旋转和反转,所以可以保证在拼接 ...
- UVA 1572 Self-Assembly
拓扑排序,以边上标号为点,正方形为边,拓扑图中存在有向环时unbounded,否则bounded: 注意:仔细处理输入: 遍历一个点时,下一次遍历拼上的下一个方形边:即假设遍历到 A+ 时,下次从 ...
- UVa 1572 Self-Assembly (拓扑排序)
题目链接: https://cn.vjudge.net/problem/UVA-1572 Automatic Chemical Manufacturing is experimenting with ...
- UVa 1572 Self-Assembly (构造+拓扑排序。。。。。)
题意:给定n个带标号的正方形,标号要么是一个大写字母加一个+或-,要么是00, 当且仅当大写字母相同并且符号相反时可以连接,问你给定的能不能拼成一个无限大的的东西. 析:说实话,真心没有看出来是拓扑排 ...
- Uva 1572 自组合
贴个源码// UVa1572 Self-Assembly // Rujia Liu #include<cstdio> #include<cstring> #include< ...
- uvalive 6393(uva 1572) Self-Assembly 拓扑排序
题意: 给出一些正方形,这些正方形的每一条边都有一个标号.这些标号有两种形式:1.一个大写字母+一个加减号(如:A+, B-, A-......), 2.两个0(如:00):这些正方形能够任意翻转和旋 ...
- UVA - 1572 Self-Assembly(图论模型+拓扑排序)
题意:判断利用给出的正方形是否能拼接出无限延伸的结构. 分析:正方形上的字母看做点,正方形看做有向边. 例如: 若上下两个正方形能拼接,需要B+~C+是个有向边. 对输入的处理是:把A+,A-分别映射 ...
随机推荐
- Android.mk脚本推断文件是否存在
Android.mk 推断文件是否存在,若存在则复制该文件到某个文件夹 $(shell test -f [文件] && echo yes)的值假设是yes, 则文件存在,然后进行she ...
- Cocos2d-x怎样控制动作速度
基本动作和组合动作实现了针对精灵的各种运动和动画效果的改变.但这种改变速度匀速的.线性的.通过ActionEase及其的派生类和Speed 类我们能够使精灵以非匀速或非线性速度运动,这样看起了效果更加 ...
- uva725(除法)
Description Write a program that finds and displays all pairs of 5-digit numbers that between them u ...
- sublime 支持 vue 语法
具体步骤如下: 1.如果你没安装Package Control,请先安装,安装方法请自行百度.安装OK后,接下来步骤请参考第2步即可. 2.如果你已经安装过Package Control,安装vue高 ...
- AC自动机 hdu2222
#include <iostream> using namespace std; struct Node{ Node *next[]; Node* fail; int count; Nod ...
- 查看JSP和Servlet版本+
如何查看JSP和Servlet版本 找到jsp-api.jar和servlet-api.jar ,分别打开META-INF下的MAINMEFT.MF文件,查看对应的版本. 例: JSP版本: Mani ...
- 【Codeforces Round #427 (Div. 2) C】Star sky
[Link]:http://codeforces.com/contest/835/problem/C [Description] 给你n个星星的坐标(xi,yi); 第i个星星在第t秒,闪烁值变为(s ...
- Mysql学习总结(17)——MySQL数据库表设计优化
1.选择优化的数据类型 MySQL支持很多种不同的数据类型,并且选择正确的数据类型对于获得高性能至关重要.不管选择何种类型,下面的简单原则都会有助于做出更好的选择: (1).更小通常更好 一般来说,要 ...
- JavaWeb学习笔记:Tomcat
Tomcat 开源的 Servlet 容器. 部署并启动 tomcat server. 解压 apache-tomcat-6.0.16.zip 到一个非中文文件夹下. 配置一个环境变量. java_h ...
- android 自己定义View之SubmitView
转载请注明出处:王亟亟的大牛之路 近期看了一大堆的自己定义View多数都能够充当耗时操作的交互界面.再接再厉再传一个SubmitView.一个和可用于模仿提交等待与用户交互用的一个自己定义View 效 ...