题目链接:

  http://codeforces.com/problemset/problem/516/B

题解:

  首先可以得到一个以‘.’为点的无向图,当存在一个点没有边时,无解。然后如果这个图边双联通无唯一解。

  同时观察可知,只有一条边的点只有唯一一种连法,所以我们可以直接将其与其相连点从图中删除,再考虑剩下图中是否还有只有一条边的点,直到所有的结点都被删除,或剩下双联通分量以及存在没有边的结点为止。

  正确性……显然吧。时间复杂度$O(n^{2})$。

代码:

  

 #include<cstdio>
inline int read(){
int s=,k=;char ch=getchar();
while(ch<''||ch>'') k=ch=='-'?-:k,ch=getchar();
while(ch>&&ch<='') s=s*+(ch^),ch=getchar();
return s*k;
}
const int N=;
int n,m;
char map[N][N];
char result[N][N];
struct node {
int x,y;
};
node q[N*N];
int l,r;
int xx[]={,-,,},yy[]={,,,-};
char z[]={'^','v','<','>','v','^','>','<'};
int pan(int x,int y){
int ans=;
for(int i=;i<;i++){
int nx=x+xx[i],ny=y+yy[i];
if(map[nx][ny]=='.') ans++;
}
return ans;
}
inline bool solve(){
int sum=;
for(int i =;i<=n;i++)
for(int j=;j<=m;j++){
if(map[i][j]=='*'){
result[i][j]=map[i][j];
continue;
}
sum++;
int t=pan(i,j);
if(t==) return ;
else if(t==) q[r++]=(node){i,j};
}
if(sum&) return false;
int t=;
while(l<r){
node now=q[l++];
int x=now.x,y=now.y;
if(map[x][y]!='.') continue;
for(int i=;i<;i++){
int nx=x+xx[i],ny=y+yy[i];
if(map[nx][ny]=='.'){
t++;
map[x][y]=;
map[nx][ny]=;
result[x][y]=z[i];
result[nx][ny]=z[i+];
for(int j=;j<;j++){
int tx=nx+xx[j],ty=ny+yy[j];
if(map[tx][ty]=='.'){
int t=pan(tx,ty);
if(t==) q[r++]=(node){tx,ty};
if(t==) return false;
}
}
break;
}
if(i==) return false;
}
}
return t>=sum/;
}
int main(){
n=read(),m=read();
for(int i=;i<=n;result[i][m+]='\n',i++)
scanf("%s",map[i]+);
bool ans=solve();
// printf("\n");
if(ans){
for(int i=;i<=n;i++)
for(int j=;j<=m+;j++){
printf("%c",result[i][j]);
}
}
else printf("Not unique\n");
}

【codeforces 516B】Drazil and Tiles的更多相关文章

  1. 【codeforces 515D】Drazil and Tiles

    [题目链接]:http://codeforces.com/contest/515/problem/D [题意] 给你一个n*m的格子; 然后让你用1*2的长方形去填格子的空缺; 如果有填满的方案且方案 ...

  2. 【codeforces 515C】Drazil and Factorial

    [题目链接]:http://codeforces.com/contest/515/problem/C [题意] 定义f(n)=n这个数各个位置上的数的阶乘的乘积; 给你a; 让你另外求一个不含0和1的 ...

  3. 【codeforces 515B】Drazil and His Happy Friends

    [题目链接]:http://codeforces.com/contest/515/problem/B [题意] 第i天选择第i%n个男生,第i%m个女生,让他们一起去吃饭; 只要这一对中有一个人是开心 ...

  4. 【codeforces 515A】Drazil and Date

    [题目链接]:http://codeforces.com/contest/515/problem/A [题意] 每次只能走到相邻的四个格子中的一个; 告诉你最后走到了(a,b)走了多少步->s ...

  5. 【codeforces 415D】Mashmokh and ACM(普通dp)

    [codeforces 415D]Mashmokh and ACM 题意:美丽数列定义:对于数列中的每一个i都满足:arr[i+1]%arr[i]==0 输入n,k(1<=n,k<=200 ...

  6. 【codeforces 707E】Garlands

    [题目链接]:http://codeforces.com/contest/707/problem/E [题意] 给你一个n*m的方阵; 里面有k个联通块; 这k个联通块,每个连通块里面都是灯; 给你q ...

  7. 【codeforces 707C】Pythagorean Triples

    [题目链接]:http://codeforces.com/contest/707/problem/C [题意] 给你一个数字n; 问你这个数字是不是某个三角形的一条边; 如果是让你输出另外两条边的大小 ...

  8. 【codeforces 709D】Recover the String

    [题目链接]:http://codeforces.com/problemset/problem/709/D [题意] 给你一个序列; 给出01子列和10子列和00子列以及11子列的个数; 然后让你输出 ...

  9. 【codeforces 709B】Checkpoints

    [题目链接]:http://codeforces.com/contest/709/problem/B [题意] 让你从起点开始走过n-1个点(至少n-1个) 问你最少走多远; [题解] 肯定不多走啊; ...

随机推荐

  1. 开发composer包,打通github和packagist,并自动更新

    1. 首先需要本地安装好composer,并配置好环境变量,在命令行输入composer,显示以下信息就表示正常安装 2. 在github对应项目的根目录下进行初始化composer 初始化完成后,就 ...

  2. Jhipster 学习(一)jhipster构建项目

    如何安装jhipster 第一步:下载jdk  自己安装的1.8版本  (安装.环境变量配置略) 第二步:1.下载Eclipse (luna版 eclipse-4.4.1) 第三步:下载maven ( ...

  3. index() checkbox单选问题

    index() 只对兄弟节点有用 如果这种结构要选择checkbox 时用prop附加属性 removeAttr清楚属性 $('.checkbox').prop('checked',true) $(' ...

  4. 不同场景下使用CSS隐藏元素

    使用 CSS 让元素不可见的方法很多,剪裁.定位到屏幕外.明度变化等都是可以的.虽然它们都是肉眼不可见,但背后却在多个维度上都有差别. 元素不可见,同时不占据空间.辅助设备无法访问.不渲染 使用 sc ...

  5. 万水千山ABP - 系统发布后迁移 CodeFirst 数据库[原创]

    在项目开发的过程中,常会遇到项目发布后还变更数据库的情况.这时如何方便地进行数据库迁移呢 ? 下面直接列出操作的步骤: 1. 发布修改后的应用: 将最新版本的应用更新到目标机器中.更新的文件当然不包括 ...

  6. mybatis中分页插件PageHelper的使用

    转载博客:http://blog.csdn.net/u012728960/article/details/50791343

  7. Java面试与回答技巧(1.如何正确的面试)

    在IT行业中,大部分公司很难用有效的方式招到合适的人.直接暴露出来的问题是:・花重金招了一个人,但实际的战斗力还比不上应届毕业生.・招聘了一个知名企业的高管,引入了一些高大上的技术,结果本来稳定的生产 ...

  8. Python学习摘要201802

    [基础]变量设计机制 [个人理解]python的变量与C++语言中的指针类似,是指向内存数据的一个引用.变量分为不可变变量string/int/float/tuple和可变变量list/dict. 对 ...

  9. SEO概念及SEO相关优化

    SEO是英文Search Engine Optimization的缩写, 中文意译为“搜索引擎优化”. 简单地说, SEO是指从自然搜索结果获得网站流量的技术和过程. http://www.imooc ...

  10. Flask入门之Bootstrap介绍使用和Flask-Nav快速导航栏

    一.Bootstrap Bootstrap,来自 Twitter,是目前最受欢迎的前端框架. Python中,同样可以使用Bootstrap. 1. 导入Bootstrap库 from flask_b ...