POJ2585 Window Pains [拓扑排序]
来源:互联网 发布:淘宝店招格式 编辑:程序博客网 时间:2024/05/02 04:51
题意:
一个屏幕要同时打开9个窗口,每个窗口是2*2的矩阵,整个屏幕大小是9*9,每个窗口位置固定。
但是是否被激活(即完整显示出来)不确定。
给定屏幕状态,问是否可以实现显示。
思路:
覆盖问题。很裸的拓扑排序。
其实看数据量也可以猜到暴力也可以。
#include<iostream>#include<stdio.h>#include<string.h>#include<algorithm>#include<vector>#include<queue>#define Max(a,b) ((a)>(b)?(a):(b))#define Min(a,b) ((a)<(b)?(a):(b))#define Abs(a) ((a)>0?(a):(-(a)))#define llong long long intusing namespace std;const int N=15;const int inf=(1<<30);int mat[5][5];int xhas[10]={0,1,2,3,1,2,3,1,2,3};int yhas[10]={0,1,1,1,2,2,2,3,3,3};int my[4]={0,0,1,1};int mx[4]={0,1,0,1};int indgr[N];int line[N][N];void addedge(int u,int v){if(!line[u][v]){line[u][v]=true;indgr[v]++;}}bool toposort(){int sum=0;queue<int> que;for(int i=1;i<=9;i++) if(!indgr[i])que.push(i);while(!que.empty()){int now=que.front();que.pop();sum++;//printf("%d",now);for(int i=1;i<=9;i++){if(line[now][i]){indgr[i]--;if(!indgr[i]){que.push(i);}}}}if(sum==9) return true;return false;}void solve(){memset(line,0,sizeof(line));memset(indgr,0,sizeof(indgr));for(int i=1;i<=9;i++){int x=xhas[i];int y=yhas[i];for(int j=0;j<4;j++){int xx=x+mx[j];int yy=y+my[j];if(mat[yy][xx]!=i)//覆盖在i之上{addedge(mat[yy][xx],i);}}}if(toposort()) printf("THESE WINDOWS ARE CLEAN\n");else printf("THESE WINDOWS ARE BROKEN\n");}int main(){char str[15];while(scanf("%s",str),str[0]=='S'){for(int i=1;i<=4;i++) for(int j=1;j<=4;j++) { scanf("%d",mat[i]+j); }solve();scanf("%s",str);}return 0;}
- POJ2585 Window Pains [拓扑排序]
- POJ2585 Window Pains(拓扑排序)
- poj2585 zoj2193 Window Pains 拓扑排序
- poj2585 Window Pains(拓扑排序判定)
- poj2585 Window Pains (裸拓扑排序)
- POJ2585~Window Pains(拓扑排序)
- 【拓扑排序】(一)(poj2585)window pains
- POJ2585--Window Pains
- poj2585 Window Pains
- poj2585 Window Pains
- POJ2585 Window Pains
- Window Pains-POJ2585
- <poj2585>Window Pains
- poj2585 Window Pains
- POJ 2585 Window Pains 拓扑排序
- POJ 2585 Window Pains (拓扑排序)
- POJ:2585 Window Pains(拓扑排序)
- [POJ 2585] Window Pains (拓扑排序)
- DataList横向排列数据实现交替行变色
- 磁致伸缩位移传感器设计辅助工具(Magnetostrictive Linear Position Sensor Design Toolbox, MLPSDT)
- java对各种文件的操作详解
- SMARTARM3250 相关资料介绍
- 存储过程模板及调用
- POJ2585 Window Pains [拓扑排序]
- C#调用oracle存储过程(返回数据集)
- C#调用oracle存储过程(插入一条数据)
- HTTP协议详解
- Hadoop1.0单点安装-Windows
- ASP.NET验证控件RegularExpressionValidator的常见正则表达式
- 解决org.springframework.beans.factory.BeanCreationException: Error creating bean with name
- shell 基础知识
- 安装clusterware报错