题目链接:

题意:

一快屏幕分非常多区域,区域之间能够相互覆盖,要覆盖就把属于自己的地方所有覆盖。

给出这块屏幕终于的位置。看这块屏幕是对的还是错的。。

思路:

拓扑排序,这个简化点说,就是说跟楚河汉界一样。。分的清清楚楚,要么这块地方是我的,要么这块地方是你的,不纯在一人一办的情况,所以假设排序的时候出现了环,那么就说这快屏幕是坏的。。

。另一点细节要注意的是第i个数字究竟属于第几行第几列。所以这个要发现规律,然后一一枚举就能够了。。

题目:

Window Pains
Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 1588   Accepted: 792

Description

Boudreaux likes to multitask, especially when it comes to using his computer. Never satisfied with just running one application at a time, he usually runs nine applications, each in its own window. Due to limited screen real estate, he overlaps these windows
and brings whatever window he currently needs to work with to the foreground. If his screen were a 4 x 4 grid of squares, each of Boudreaux's windows would be represented by the following 2 x 2 windows:

1 1 . .
1 1 . .
. . . .
. . . .
. 2 2 .
. 2 2 .
. . . .
. . . .
. . 3 3
. . 3 3
. . . .
. . . .
. . . .
4 4 . .
4 4 . .
. . . .
. . . .
. 5 5 .
. 5 5 .
. . . .
. . . .
. . 6 6
. . 6 6
. . . .
. . . .
. . . .
7 7 . .
7 7 . .
. . . .
. . . .
. 8 8 .
. 8 8 .
. . . .
. . . .
. . 9 9
. . 9 9

When Boudreaux brings a window to the foreground, all of its squares come to the top, overlapping any squares it shares with other windows. For example, if window 1and then window 2 were brought to the foreground, the resulting representation
would be:

1 2 2 ?

1 2 2 ?
? ? ? ?

? ?

? ?

If window 4 were then brought to the foreground:
1 2 2 ?
4 4 2 ?

4 4 ? ?

?

? ? ?

. . . and so on . . . 

Unfortunately, Boudreaux's computer is very unreliable and crashes often. He could easily tell if a crash occurred by looking at the windows and seeing a graphical representation that should not occur if windows were being brought to the foreground correctly.
And this is where you come in . . .

Input

Input to this problem will consist of a (non-empty) series of up to 100 data sets. Each data set will be formatted according to the following description, and there will be no blank lines separating data sets. 



A single data set has 3 components:

  1. Start line - A single line: 

    START
  2. Screen Shot - Four lines that represent the current graphical representation of the windows on Boudreaux's screen. Each position in this 4 x 4 matrix will represent the current piece of window showing in each square. To make input easier, the list of numbers
    on each line will be delimited by a single space.
  3. End line - A single line: 

    END

After the last data set, there will be a single line: 

ENDOFINPUT 



Note that each piece of visible window will appear only in screen areas where the window could appear when brought to the front. For instance, a 1 can only appear in the top left quadrant.

Output

For each data set, there will be exactly one line of output. If there exists a sequence of bringing windows to the foreground that would result in the graphical representation of the windows on Boudreaux's screen, the output will be a single line with the statement: 



THESE WINDOWS ARE CLEAN 



Otherwise, the output will be a single line with the statement: 

THESE WINDOWS ARE BROKEN 


Sample Input

START
1 2 3 3
4 5 6 6
7 8 9 9
7 8 9 9
END
START
1 1 3 3
4 1 3 3
7 7 9 9
7 7 9 9
END
ENDOFINPUT

Sample Output

THESE WINDOWS ARE CLEAN
THESE WINDOWS ARE BROKEN

Source

代码为:

#include<cstdio>
#include<iostream>
#include<vector>
#include<cstring>
#include<queue>
#include<algorithm>
using namespace std;
const int maxn=5+10;
int map[maxn][maxn],in[maxn]; queue<int>Q;
vector<int>vec[maxn];
int dx[]={0,0,1,1};
int dy[]={0,1,0,1}; int topo()
{
int sum=9;
while(!Q.empty()) Q.pop();
for(int i=1;i<=9;i++)
{
if(in[i]==0)
Q.push(i);
}
while(!Q.empty())
{
int temp=Q.front();
Q.pop();
sum--;
for(int i=0;i<vec[temp].size();i++)
{
if(--in[vec[temp][i]]==0)
Q.push(vec[temp][i]);
}
}
if(sum>0) return 0;
else return 1;
} void init()
{
char str[10];
for(int i=1;i<=9;i++)
{
vec[i].clear();
in[i]=0;
}
for(int i=1;i<=9;i++)
{
int x=(i-1)/3+1;
int y=i%3==0? 3:i%3;
for(int j=0;j<=3;j++)
{
int tx=x+dx[j];
int ty=y+dy[j];
if(map[tx][ty]!=i)
{
vec[i].push_back(map[tx][ty]);
in[map[tx][ty]]++;
}
}
}
scanf("%s",str);
} void solve()
{
int ans=topo();
if(ans)
cout<<"THESE WINDOWS ARE CLEAN"<<endl;
else
cout<<"THESE WINDOWS ARE BROKEN"<<endl;
} int main()
{
char str[10];
while(~scanf("%s",str))
{
if(strcmp(str,"ENDOFINPUT")==0) return 0;
for(int i=1;i<=4;i++)
for(int j=1;j<=4;j++)
scanf("%d",&map[i][j]);
init();
solve();
}
return 0;
}

pojWindow Pains(拓扑排序)的更多相关文章

  1. POJ 2585.Window Pains 拓扑排序

    Window Pains Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1888   Accepted: 944 Descr ...

  2. 【POJ 2585】Window Pains 拓扑排序

    Description . . . and so on . . . Unfortunately, Boudreaux's computer is very unreliable and crashes ...

  3. POJ2585 Window Pains 拓扑排序

    Window Pains Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1843   Accepted: 919 Descr ...

  4. POJ 2585:Window Pains(拓扑排序)

    Window Pains Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2524   Accepted: 1284 Desc ...

  5. ACM/ICPC 之 拓扑排序范例(POJ1094-POJ2585)

    两道拓扑排序问题的范例,用拓扑排序解决的实质是一个单向关系问题 POJ1094(ZOJ1060)-Sortng It All Out 题意简单,但需要考虑的地方很多,因此很容易将code写繁琐了,会给 ...

  6. [poj2585]Window Pains_拓扑排序

    Window Pains poj-2585 题目大意:给出一个4*4的方格表,由9种数字组成.其中,每一种数字只会出现在特定的位置,后出现的数字会覆盖之前在当前方格表内出现的.询问当前给出的方格表是否 ...

  7. 算法与数据结构(七) AOV网的拓扑排序

    今天博客的内容依然与图有关,今天博客的主题是关于拓扑排序的.拓扑排序是基于AOV网的,关于AOV网的概念,我想引用下方这句话来介绍: AOV网:在现代化管理中,人们常用有向图来描述和分析一项工程的计划 ...

  8. 有向无环图的应用—AOV网 和 拓扑排序

    有向无环图:无环的有向图,简称 DAG (Directed Acycline Graph) 图. 一个有向图的生成树是一个有向树,一个非连通有向图的若干强连通分量生成若干有向树,这些有向数形成生成森林 ...

  9. 【BZOJ-2938】病毒 Trie图 + 拓扑排序

    2938: [Poi2000]病毒 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 609  Solved: 318[Submit][Status][Di ...

随机推荐

  1. LOL喷子专用自动骂人工具,2018更新完整版!

    软件截图 软件说明: 先进入游戏 打开程序 Z开启/C关闭 下载地址:密码 yjnm

  2. CAD参数绘制块引用对象(网页版)

    主要用到函数说明: _DMxDrawX::DrawBlockReference 绘制块引用对象.详细说明如下: 参数 说明 DOUBLE dPosX 插入点的X坐标 DOUBLE dPosY 插入点的 ...

  3. java图片放大或缩小

    package org.jimmy.autotranslate20181022.utils; import java.awt.Graphics; import java.awt.image.Buffe ...

  4. 无法完成安装:'Cannot access storage file '/

    今天自己编译了spice-protocol spice-gtk spice qemu,然后想用virsh去创建一个虚机: # virsh define demo.xml     定义域 demo(从 ...

  5. mysql图形化工具获取表的源码

    打开数据库,选择要查看的表,点击右键>对象信息>DDL:

  6. django显示图片

    dirctory vickey_django vickey(projectname) vickey __init__.py __pycache__ settings.py urls.py wsgi.p ...

  7. HDFS的Java API 对文件的操作

    在本次操作中所用到的命令 1.首先启动HDFS $HADOOP_HOME/sbin/start-dfs.sh 2.关防火墙 切换到root用户,执行service iptables stop 3.拷贝 ...

  8. [Python3网络爬虫开发实战] 4.1-使用XPath

    XPath,全称XML Path Language,即XML路径语言,它是一门在XML文档中查找信息的语言.它最初是用来搜寻XML文档的,但是它同样适用于HTML文档的搜索. 所以在做爬虫时,我们完全 ...

  9. 安装composer及切换镜像为国内镜像

    一.下载composer php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" 下面的 ...

  10. PHP:POST OR GET 请求

    文章来源:http://www.cnblogs.com/hello-tl/p/7685216.html /** * 模拟提交参数,支持https提交 可用于各类api请求 * @param strin ...