poj1691(dfs)
dfs了 写得有点乱
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
using namespace std;
#define INF 0xfffffff
struct node
{
int lx,ly,rx,ry,d;
}co[];
int kk[][],o[];
int num[][],oo[],ans,fk[];
int n;
void dfs(int u,int de,int vis[])
{
int i,j,ff=,vv[];
if(de>ans)
return ;
for(i = ; i <= oo[u] ; i++)
{
int v = num[u][i];
ff = ;
for(j = ; j <= o[v] ; j++)
{
int ko = kk[v][j];
if(!vis[ko])
{
ff=;
break;
}
}
if(ff)
vis[v]=;
}
for(i = ; i <= n ; i++)
if(!vis[i])
break;
if(i==n+)
{
ans = de;
return ;
}
for(i = ; i <= n ; i++)
vv[i] = vis[i];
for(i = ; i <= n ; i++)
{
if(!vis[i])
{
for(j = ; j <= o[i] ; j++)
{
int x = kk[i][j];
if(!vis[x])
break;
}
if(j>o[i])
dfs(co[i].d,de+,vis);
}
for(j = ; j <= n ; j++)
vis[j] = vv[j];
}
}
int main()
{
int i,j,t,vis[];
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
memset(vis,,sizeof(vis));
memset(kk,,sizeof(kk));
memset(o,,sizeof(o));
memset(oo,,sizeof(oo));
memset(fk,,sizeof(fk));
ans = INF;
for(i = ; i <= n ; i++)
{
scanf("%d%d%d%d%d",&co[i].ly,&co[i].lx,&co[i].ry,&co[i].rx,&co[i].d);
oo[co[i].d]++;
num[co[i].d][oo[co[i].d]] = i;
}
for(i = ; i <= n ; i++)
{
for(j = ; j <= n ; j++)
{
if(i==j)
continue;
if(((co[j].lx>=co[i].lx&&co[j].lx<co[i].rx)||(co[j].rx<=co[i].rx&&co[j].rx>co[i].lx))&&(co[j].ry<=co[i].ly))
{
o[i]++;
kk[i][o[i]] = j;
}
}
}
for(i = ; i <= n ; i++)
{
if(!o[i]&&!fk[co[i].d])
{
fk[co[i].d] = ;
dfs(co[i].d,,vis);
}
memset(vis,,sizeof(vis));
}
printf("%d\n",ans);
}
return ;
}
poj1691(dfs)的更多相关文章
- 素数环(dfs+回溯)
题目描述: 输入正整数n,把整数1,2...n组成一个环,使得相邻两个数和为素数.输出时从整数1开始逆时针排列并且不能重复: 例样输入: 6 例样输出: 1 4 3 2 5 6 1 6 5 2 3 4 ...
- (DFS)codevs1004-四子连棋
题目地址 方法是建立dfs,并在其中加入pre变量,记录之前移动的是W还是B.外面套for循环,从1步开始逐次递增,直到在i步时可以走完(dfs返回1),break退出循环,即为最短步. 本题的关键主 ...
- LeetCode Subsets II (DFS)
题意: 给一个集合,有n个可能相同的元素,求出所有的子集(包括空集,但是不能重复). 思路: 看这个就差不多了.LEETCODE SUBSETS (DFS) class Solution { publ ...
- LeetCode Subsets (DFS)
题意: 给一个集合,有n个互不相同的元素,求出所有的子集(包括空集,但是不能重复). 思路: DFS方法:由于集合中的元素是不可能出现相同的,所以不用解决相同的元素而导致重复统计. class Sol ...
- HDU 2553 N皇后问题(dfs)
N皇后问题 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description 在 ...
- POJ 4003 Bob’s Race && HDU4123 Bob’s Race (dfs+rmq)
Bob’s Race Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 378 Accepted: 119 Descript ...
- 深搜(DFS)广搜(BFS)详解
图的深搜与广搜 一.介绍: p { margin-bottom: 0.25cm; direction: ltr; line-height: 120%; text-align: justify; orp ...
- 【算法导论】图的深度优先搜索遍历(DFS)
关于图的存储在上一篇文章中已经讲述,在这里不在赘述.下面我们介绍图的深度优先搜索遍历(DFS). 深度优先搜索遍历实在访问了顶点vi后,访问vi的一个邻接点vj:访问vj之后,又访问vj的一个邻接点, ...
- 深度优先搜索(DFS)与广度优先搜索(BFS)的Java实现
1.基础部分 在图中实现最基本的操作之一就是搜索从一个指定顶点可以到达哪些顶点,比如从武汉出发的高铁可以到达哪些城市,一些城市可以直达,一些城市不能直达.现在有一份全国高铁模拟图,要从某个城市(顶点) ...
随机推荐
- Mysql 流程控制
流程控制 分支结构 if分支结构 语法: if 条件then -- 语句体 else -- 缺省语句体 end if; 示例: 循环结构 whi ...
- Java validator整理
Java validator整理 因为想对方法的入参和出参作简单的非空或者非空字符做校验,所以找了下相关的@NotNull注解 类 | 说明 --- | --- javax.validation.co ...
- 暑假集训(2)第七弹 -----今年暑假不AC(hdu2037)
J - 今年暑假不AC Crawling in process... Crawling failed Time Limit:1000MS Memory Limit:32768KB 64 ...
- Poj 1017 / OpenJudge 1017 Packets/装箱问题
1.链接地址: http://poj.org/problem?id=1017 http://bailian.openjudge.cn/practice/1017 2.题目: 总时间限制: 1000ms ...
- javascript控制子页面对父页面控件操作
//赋值 window.parent.document.getElementById("partyid_trade_edit").value = data.data.partyid ...
- LPC17XX 数据手册摘要之系统时钟与功率控制
系统时钟与功率控制 一.系统时钟 LPC17XX有三个独立的时钟振荡器,分别是主振荡器(MIAN_OSC).内部RC振荡器(IRC_OSC).实时时钟振荡器(RTC_OSC).LPC17XX时钟框图如 ...
- Centos7源码安装mysql及读写分离,互为主从
Linux服务器 -源码安装mysql 及读写分离,互为主从 一.环境介绍: Linux版本: CentOS 7 64位 mysq版本: mysql-5.6.26 这是我安装时所使用的版本, ...
- log4net 总结
说实话,我并不是太想写这篇文章,因为我承诺过要完成博客园的部分功能,所以一直都在积极的利用下班时间来完善这个系统, 但是我又不想让看我源代码的朋友不知道我写的代码是什么意思,所以我还是单独写一个文章, ...
- php 魔术方法__get()和__set()理解
__get()方法,官方手册上是这样解释的 : ' 当调用(自己加的:或设置|赋值)当前环境下未定义或不可见的类属性或方法时,重载方法会被调用.本节后面将使用"不可访问属性(inaccess ...
- python获取系统时间
import time print time.time() 输出的结果是: 1279578704.6725271 但是这样是一连串的数字不是我们想要的结果,我们可以利用time模块的格式化时间的方法来 ...