这题主要在于建图。对9个2*2的小块,第i块如果出现了不等于i的数字,那么一定是在i之后被brought的。可以从i到该数字建一条边。

图建好后,进行一次拓扑排序,判段是否存在环。若存在环,那么就是BROKEN,否则是CLEAN。

#include<iostream>
#include<cstdio>
#include<cstring>
#define Maxn 102
#define Maxm 10010
using namespace std;
int graphic[Maxn][Maxn],indegree[Maxn],n,m,map[Maxn][Maxn],vi[];
int Topsort()
{
int i,j,k,num=;
for(i=;i<=;i++)
{
for(j=;j<=;j++)
{
if(indegree[j]==)
{
indegree[j]--;
for(k=;k<=;k++)
if(graphic[j][k])
indegree[k]--;
num++;
break;
}
}
}
if(num<)
return ;
return ;
}
int main()
{
char str[];
int i,j;
while(scanf("%s",&str),strlen(str)<)
{
n=;
memset(vi,,sizeof(vi));
memset(graphic,,sizeof(graphic));
memset(indegree,,sizeof(indegree));
for(i=;i<=;i++)
{
for(j=;j<=;j++)
{
scanf("%d",&map[i][j]);
}
}
int k=;
for(i=;i<=;i++)
for(j=;j<=;j++)
{
k++;
if(map[i][j]!=k)
{
if(!graphic[k][map[i][j]])
{
graphic[k][map[i][j]]=;
indegree[map[i][j]]++;
}
}
if(map[i][j+]!=k)
{
if(!graphic[k][map[i][j+]])
{
graphic[k][map[i][j+]]=;
indegree[map[i][j+]]++;
}
}
if(map[i+][j]!=k)
{
if(!graphic[k][map[i+][j]])
{
graphic[k][map[i+][j]]=;
indegree[map[i+][j]]++;
}
}
if(map[i+][j+]!=k)
{
if(!graphic[k][map[i+][j+]])
{
graphic[k][map[i+][j+]]=;
indegree[map[i+][j+]]++;
}
}
}
scanf("%s",&str);
if(Topsort())
printf("THESE WINDOWS ARE CLEAN\n");
else
printf("THESE WINDOWS ARE BROKEN\n");
}
return ;
}

poj 2585 拓扑排序的更多相关文章

  1. poj 3687(拓扑排序)

    http://poj.org/problem?id=3687 题意:有一些球他们都有各自的重量,而且每个球的重量都不相同,现在,要给这些球贴标签.如果这些球没有限定条件说是哪个比哪个轻的话,那么默认的 ...

  2. POJ 3249 拓扑排序+DP

    貌似是道水题.TLE了几次.把所有的输入输出改成scanf 和 printf ,有吧队列改成了数组模拟.然后就AC 了.2333333.... Description: MR.DOG 在找工作的过程中 ...

  3. poj 3249 拓扑排序 and 动态规划

    思路:我们首先来一遍拓扑排序,将点按先后顺序排列于一维数组中,然后扫描一遍数组,将每个点的出边所连接的点进行更新,即可得到最优解. #include<iostream> #include& ...

  4. Sorting It All Out POJ - 1094 拓扑排序

    题意:给N个字母,和M个偏序关系 求一个可确定的全序,可确定是指没有其他的可能例如A>B D>B 那么有ADB DAB两种,这就是不可确定的其中,M个偏序关系可以看做是一个一个按时间给出的 ...

  5. nyoj 349 (poj 1094) (拓扑排序)

    Sorting It All Out 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 An ascending sorted sequence of distinct ...

  6. Poj(3687),拓扑排序,

    题目链接:http://poj.org/problem?id=3687 题意:n个重量为1~n的球,给定一些编号间的重量比较关系,现在给每个球编号,在符合条件的前提下使得编号小的球重量小.(先保证1号 ...

  7. POJ 1094 拓扑排序

    Description:      规定对于一个只有大写字母的字符串是有大小顺序的.如ABCD.即A<B.B<C.C<D.那么问题来了.现在第一行给你n, m代表序列里只会出现前n的 ...

  8. POJ 1128 拓扑排序 + 深搜

    /* (⊙v⊙)嗯 貌似是一个建图 拓扑+深搜的过程.至于为什么要深搜嘛..一个月前敲得题现在全部推了重敲,于是明白了.因为题意要求如果有多个可能的解的话. * 就要输出字典序最小的那个.所以可以对2 ...

  9. poj 2367 拓扑排序入门

    Description The system of Martians' blood relations is confusing enough. Actually, Martians bud when ...

随机推荐

  1. POJ 1258 Agri-Net (最小生成树)

    Agri-Net 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/H Description Farmer John has be ...

  2. VB.NET开发中遇到的一个小问题

    在修改公司用vb.net的写的代码时,遇到一个小问题 页面上有一个button, ID是btnNext, 在属性页中,它的click事件对应的是cmdNext, 我像在c#中一样,在属性页中双击cmd ...

  3. 转载IEnumerable与IEnumerator区别

    public interface IEnumerable {     IEnumerator GetEnumerator(); }   public interface IEnumerator {   ...

  4. HDU 5835 Danganronpa (水题)

    题意:给定 n 个礼物有数量,一种是特殊的,一种是不特殊的,要分给一些人,每人一个特殊的一个不特殊,但是不特殊的不能相邻的,问最多能分给多少人. 析:是一个比较简单的题目,我们只要求差值就好,先算第一 ...

  5. kettle内存溢出

    ETL工具kettle,在老版设计后,使用新版时,居然发生了内存溢出的错误: 出现: java heap 或者 OutOfMemory等字样 这是kettle分配的内存不足. 在kettle的运行路径 ...

  6. hadoop2.1.0和hadoop2.2.0编译安装教程

    由于现在hadoop2.0还处于beta版本,在apache官方网站上发布的beta版本中只有编译好的32bit可用,如果你直接下载安装在64bit的linux系统的机器上,运行会报一个INFO ut ...

  7. mongodb 、nosql、 redis、 memcached 是什么?

    mongodb 是一个基于文档的数据库,所有数据是从磁盘上进行读写的.MongoDB善长的是对无模式JSON数据的查询.而Redis是一个基于内存的键值数据库,它由C语言实现的,与Nginx/ Nod ...

  8. 常用小方法 or 语法

    --> 获取外部文件 def groovyUtils = new GroovyUtils( context ) def xmlFilePath = groovyUtils.getProjectP ...

  9. Codeforces GYM 100114 C. Sequence 打表

    C. Sequence Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100114 Description ...

  10. Spring的DataSource配置、将Hibernate配置所有写到Spring配置

    DataSource能够集中管理数据库连接,降低维护工作量,使部署更简单: Spring的DataSource配置:(Spring数据源配置)这里使用dbcp,还有非常多其它的如c3p0,jdbc,j ...