[bzoj3953] [WF2013]Self-Assembly
2016-07-05 20:07
344 查看
将正方形视为连接字符间的边。比方说正方形上存在A+,B-,就从A-往B+连边,表示字符可以通过这个正方形进行变换。
如果能构成环的话就可以无穷大了。。。判环随便写个拓扑什么的...
View Code
如果能构成环的话就可以无穷大了。。。判环随便写个拓扑什么的...
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #define ll long long #define ull unsigned long long #define d double using namespace std; bool mp[55][55]; int dl[233],rd[233];; int i,j,k,n,m,l,r; char s[23]; int ra,fh;char rx; inline int read(){ rx=getchar(),ra=0,fh=1; while((rx<'0'||rx>'9')&&rx!='-')rx=getchar(); if(rx=='-')fh=-1,rx=getchar(); while(rx>='0'&&rx<='9')ra*=10,ra+=rx-48,rx=getchar();return ra*fh; } int main(){ n=read();int a[5]; for(i=1;i<=n;i++){ scanf("%s",s+1); for(j=1;j<=4;j++)if(s[j<<1]!='0') a[j]=(s[j*2-1]-'A'+1)*2+(s[j<<1]=='-');else a[j]=-233; // for(j=1;j<=4;j++)printf(" %d",a[j]);puts(""); for(j=1;j<4;j++)if(a[j]>0)for(k=j+1;k<=4;k++)if(a[k]>0) // printf(" %d-->%d\n %d-->%d\n",a[j]^1,a[k],a[k]^1,a[j]), mp[a[j]^1][a[k]]=mp[a[k]^1][a[j]]=1; // printf("(%d)",i); } for(i=2;i<=53;i++){ for(j=2;j<=53;j++)if(mp[j][i])rd[i]++; if(!rd[i])dl[++r]=i; } while(l<r) for(int now=dl[++l],i=2;i<=53;i++)if(mp[now][i]&&!--rd[i]) dl[++r]=i; if(r==52)puts("bounded");else puts("unbounded"); }
View Code
相关文章推荐
- Mybatis数据操作
- php发送邮箱
- 跟我学Android之九 日期时间组件
- 跟我学Android之九 日期时间组件
- 跟我学Android之九 日期时间组件
- shell脚本:收集系统和各种服务的状态信息
- prop()和attr()获取a 标签href值的重大区别
- Codeforces Round #285 (Div. 1) A. Misha and Forest 拓扑排序
- 树莓派IoT 学习3 修改静态ip
- 小字符喷码机和高解析喷码机的区别
- •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组; •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
- CreatCompatibleDC
- 寻找下一个结点
- FastDFS学习总结(1)--FastDFS安装和部署
- 1692.cover
- FastDFS学习总结(1)--FastDFS安装和部署
- 竹林蹊径-深入浅出Windows内核开发作者的博客
- iOS直播点赞动画,iOS直播心型点赞动画
- Error:Error: Expected resource of type drawable [ResourceType]
- BZOJ 1007 [HNOI2008]水平可见直线===数学相关