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.基础部分 在图中实现最基本的操作之一就是搜索从一个指定顶点可以到达哪些顶点,比如从武汉出发的高铁可以到达哪些城市,一些城市可以直达,一些城市不能直达.现在有一份全国高铁模拟图,要从某个城市(顶点) ...
随机推荐
- 常用终端及git命令
终端常用命令 1,打开终端,git version 查看版本 2,pwd 打印工作目录 3,ls(list简写)查看当前目录的所有文件 4,clear 清掉屏幕 5,cd (change direct ...
- 严重: Exception starting filter struts2
我是用了右键-Add Struts.. 所以,不应该在WebRoot->WEB-INF->lib中加入5个基本包了...
- HDOJ 1423 Greatest Common Increasing Subsequence -- 动态规划
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1423 Problem Description This is a problem from ZOJ 2 ...
- Poj/OpenJudge 1094 Sorting It All Out
1.链接地址: http://poj.org/problem?id=1094 http://bailian.openjudge.cn/practice/1094 2.题目: Sorting It Al ...
- 安卓Handler机制的例子
Handler机制是实现线程之间通讯的一种很常见的方法,很多时候都会用到. package com.lab.activity; import android.app.Activity; import ...
- hdu 5094 Maze 状态压缩dp+广搜
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4092176.html 题目链接:hdu 5094 Maze 状态压缩dp+广搜 使用广度优先 ...
- SET ANSI_NULLS ON
Transact-SQL 支持在与空值进行比较时,允许比较运算符返回 TRUE 或 FALSE. 通过设置 ANSI_NULLS OFF 可将此选项激活.当 ANSI_NULLS 为 OFF 时,如果 ...
- poj 2104 K-th Number 划分树,主席树讲解
K-th Number Input The first line of the input file contains n --- the size of the array, and m --- t ...
- EventLog组件
1.使用EventLog组件读写事件日志 SourceExists方法 确定事件源是否已在本地计算机上注册 DeleteEventSource方法 用于从事件日志中移除应用程序的事件源注册 pri ...
- java枚举类型enum的使用
2015-10-24 java达人 Java 中 的枚举类型采用关键字enum 来定义,从jdk1.5才有的新类型,所有的枚举类型都是继承自Enum 类型.要了解枚举类型,建议大家先打开jdk 中的E ...