当前位置: 首页 > news >正文

POJ 2585 Window Pains 拓扑排序

 题意:

给了你9种图片 问给的图片能不能由这九种构成

 

思路:

拓扑排序 对能存在的点连边

如果不存在环的话 这个图就成立 否则不成立

 

  1 #include<cstdio>
  2 #include<iostream>
  3 #include<cstring>
  4 #define cl(a,b) memset(a,b,sizeof(a))
  5 using namespace std;
  6 
  7 const int maxn=10;
  8 
  9 int T;
 10 int cnt[maxn];
 11 int mp[maxn][maxn];
 12 int num[maxn][maxn];
 13 int cover[maxn][maxn][maxn];
 14 bool vis[maxn];
 15 bool link[maxn][maxn];
 16 
 17 int dx[]= {0,0,1,1};
 18 int dy[]= {0,1,0,1};
 19 
 20 void init()
 21 {
 22     int i,j;
 23     cl(cover,0);
 24     for(int k=0; k<9; k++)
 25     {
 26         i=k/3,j=k%3;
 27         for(int l=0; l<4; l++)
 28         {
 29             int x=i+dx[l];
 30             int y=j+dy[l];
 31             cover[x][y][num[x][y]++]=k+1;
 32         }
 33     }
 34 }
 35 
 36 void build()
 37 {
 38     for(int i=0; i<4; i++)
 39     {
 40         for(int j=0; j<4; j++)
 41         {
 42             for(int k=0; k<num[i][j]; k++)
 43             {
 44                 if((!link[mp[i][j]][cover[i][j][k]])
 45                  &&(mp[i][j]!=cover[i][j][k]))
 46                 {
 47                     link[mp[i][j]][cover[i][j][k]]=true;
 48                     cnt[cover[i][j][k]]++;
 49                 }
 50             }
 51         }
 52     }
 53 }
 54 
 55 bool topsort()
 56 {
 57     while(T--)
 58     {
 59 
 60         int now=1;
 61         while(!vis[now]||(now<=9&&cnt[now]>0))
 62         {
 63             now++;
 64 //            printf("%d\n",now);
 65         }
 66 
 67         if(now>9)
 68         {
 69             return false;
 70         }
 71         vis[now]=false;
 72         for(int i=1; i<=9; i++)
 73         {
 74             if(vis[i]&&link[now][i])
 75             {
 76                 cnt[i]--;
 77             }
 78         }
 79     }
 80     return true;
 81 }
 82 
 83 int main()
 84 {
 85     init();
 86     char str[maxn];
 87     while(scanf("%s",str)&&str[0]=='S')
 88     {
 89         cl(cnt,0),T=0;
 90         cl(vis,false);
 91         cl(link,false);
 92         for(int i=0; i<4; i++)
 93         {
 94             for(int j=0; j<4; j++)
 95             {
 96                 scanf("%d",&mp[i][j]);
 97                 if(!vis[mp[i][j]])
 98                 {
 99                     T++;
100                     vis[mp[i][j]]=true;
101                 }
102             }
103         }
104         build();
105         scanf("%s",str);
106         if(topsort()) puts("THESE WINDOWS ARE CLEAN");
107         else puts("THESE WINDOWS ARE BROKEN");
108     }
109     return 0;
110 }/*
111 
112 START
113 1 2 3 3
114 4 5 6 6
115 7 8 9 9
116 7 8 9 9
117 END
118 START
119 1 1 3 3
120 4 1 3 3
121 7 7 9 9
122 7 7 9 9
123 END
124 ENDOFINPUT
125 
126 */

 

转载于:https://www.cnblogs.com/general10/p/7228136.html

相关文章:

  • 【Android Dev Guide - 03】 - Content Providers
  • Coding Pages jekyll 404无法找到静态文件(css,js )
  • Linux(ubuntu)下安装搭建Eclipse开发环境
  • 定时清理两周前的分区上的数据
  • Linux(ubuntu)下搭建Android开发环境
  • C++井字棋游戏,DOS界面版
  • html5 02 随记
  • 复制粘贴惹的祸
  • Spring Boot 揭秘与实战(八) 发布与部署 - 开发热部署
  • Firefox:如何设置Firefox为默认浏览器
  • npm常用功能
  • Android中List循环遍历性能对照
  • 系统崩溃造成数据库无法启动的恢复
  • sap安装
  • HTTP架构介绍(2) 缓存
  • 自己简单写的 事件订阅机制
  • [Vue CLI 3] 配置解析之 css.extract
  • 【刷算法】从上往下打印二叉树
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • canvas 五子棋游戏
  • C学习-枚举(九)
  • Idea+maven+scala构建包并在spark on yarn 运行
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • Java反射-动态类加载和重新加载
  • ng6--错误信息小结(持续更新)
  • spark本地环境的搭建到运行第一个spark程序
  • vue.js框架原理浅析
  • 阿里云Kubernetes容器服务上体验Knative
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 动态规划入门(以爬楼梯为例)
  • 面试总结JavaScript篇
  • 前嗅ForeSpider采集配置界面介绍
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 原生 js 实现移动端 Touch 滑动反弹
  • ​​​​​​​​​​​​​​Γ函数
  • $.ajax()
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (C语言)二分查找 超详细
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (Python第六天)文件处理
  • (附源码)计算机毕业设计高校学生选课系统
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (六)c52学习之旅-独立按键
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (十六)Flask之蓝图
  • (四)linux文件内容查看
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • ****Linux下Mysql的安装和配置
  • ***原理与防范
  • .NET Core中Emit的使用
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?