poj 2585 拓扑排序
这题主要在于建图。对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 拓扑排序的更多相关文章
- poj 3687(拓扑排序)
http://poj.org/problem?id=3687 题意:有一些球他们都有各自的重量,而且每个球的重量都不相同,现在,要给这些球贴标签.如果这些球没有限定条件说是哪个比哪个轻的话,那么默认的 ...
- POJ 3249 拓扑排序+DP
貌似是道水题.TLE了几次.把所有的输入输出改成scanf 和 printf ,有吧队列改成了数组模拟.然后就AC 了.2333333.... Description: MR.DOG 在找工作的过程中 ...
- poj 3249 拓扑排序 and 动态规划
思路:我们首先来一遍拓扑排序,将点按先后顺序排列于一维数组中,然后扫描一遍数组,将每个点的出边所连接的点进行更新,即可得到最优解. #include<iostream> #include& ...
- Sorting It All Out POJ - 1094 拓扑排序
题意:给N个字母,和M个偏序关系 求一个可确定的全序,可确定是指没有其他的可能例如A>B D>B 那么有ADB DAB两种,这就是不可确定的其中,M个偏序关系可以看做是一个一个按时间给出的 ...
- nyoj 349 (poj 1094) (拓扑排序)
Sorting It All Out 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 An ascending sorted sequence of distinct ...
- Poj(3687),拓扑排序,
题目链接:http://poj.org/problem?id=3687 题意:n个重量为1~n的球,给定一些编号间的重量比较关系,现在给每个球编号,在符合条件的前提下使得编号小的球重量小.(先保证1号 ...
- POJ 1094 拓扑排序
Description: 规定对于一个只有大写字母的字符串是有大小顺序的.如ABCD.即A<B.B<C.C<D.那么问题来了.现在第一行给你n, m代表序列里只会出现前n的 ...
- POJ 1128 拓扑排序 + 深搜
/* (⊙v⊙)嗯 貌似是一个建图 拓扑+深搜的过程.至于为什么要深搜嘛..一个月前敲得题现在全部推了重敲,于是明白了.因为题意要求如果有多个可能的解的话. * 就要输出字典序最小的那个.所以可以对2 ...
- poj 2367 拓扑排序入门
Description The system of Martians' blood relations is confusing enough. Actually, Martians bud when ...
随机推荐
- oracle中in与exists的区别
exists是用来判断是否存在的,当exists中的查询存在结果时则返回真,否则返回假.not exists则相反. exists做为where 条件时,是先对where 前的主查询询进行查询,然后用 ...
- poj 1679 http://poj.org/problem?id=1679
http://poj.org/problem?id=1679 The Unique MST Time Limit: 1000MS Memory Limit: 10000K Total Submis ...
- threading模块
threading — Higher-level threading interface¶ Source code: Lib/threading.py This module constructs h ...
- qemu 模拟-arm-mini2440开发板-启动u-boot,kernel和nfs文件系统
qemu 本文介绍了如何编译u-boot.linux kernel,然后用qemu启动u-boot和linux kernel,达到与开发板上一样的学习效果! 虽然已经买了2440开发板,但是在实际学习 ...
- windows下实现微秒级的延时
windowsintegeriostream汇编嵌入式任务 最近正在做一个嵌入式系统,是基于windows ce的,外接硬件的时序要微秒级的延时.1.微秒级的延时肯定不能基于消息(SetTimer函数 ...
- java 搭建webservice服务+testclient測试
整理别人的日志: 一.什么是webservice 一种构建应用程序的普遍模型,能够在不论什么支持网络通信的操作系统中执行.一种新的web应用程序分支,能够公布.定位通过web调用.它是一个应用组件,为 ...
- stm32上的Lava虚拟机开发进度汇报(2)
现在已经基本完成了Lava主要函数的编写,但还是有几个问题没解决: 1.实心圆和实心椭圆 2.FillArea 3.GetWord 其中FillArea如果没有很好的解决方法就算了,GetWord用g ...
- 【M26】限制某个class所能产生的对象数量
1.每当产生一个对象,必定调用构造方法.因此,禁止产生对象的做法就是,将所有的构造方法声明为private. 2.只有在类的内部才可以访问private成员,有两层含义:在类的内部可以访问this的p ...
- Javascript可变长度参数列表 - Arguments对象
在一个函数体内,标识符arguments具有特殊含义. Arguments对象是一个类似数组的对象 eg: 验证函数参数的正确数目 function f(x, y, z) { if (argument ...
- Codeforces Round #274 (Div. 1) B. Long Jumps 数学
B. Long Jumps Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/480/problem/ ...