博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu1054——Strategic Game(最小顶点覆盖+邻接表)
阅读量:2343 次
发布时间:2019-05-10

本文共 1712 字,大约阅读时间需要 5 分钟。

Problem Description

Bob enjoys playing computer games, especially strategic games, but sometimes he cannot find the solution fast enough and then he is very sad. Now he has the following problem. He must defend a medieval city, the roads of which form a tree. He has to put the minimum number of soldiers on the nodes so that they can observe all the edges. Can you help him?

Your program should find the minimum number of soldiers that Bob has to put for a given tree.

The input file contains several data sets in text format. Each data set represents a tree with the following description:

the number of nodes

the description of each node in the following format
node_identifier:(number_of_roads) node_identifier1 node_identifier2 … node_identifier
or
node_identifier:(0)

The node identifiers are integer numbers between 0 and n-1, for n nodes (0 < n <= 1500). Every edge appears only once in the input data.

For example for the tree:

这里写图片描述

the solution is one soldier ( at the node 1).

The output should be printed on the standard output. For each given input data set, print one integer number in a single line that gives the result (the minimum number of soldiers). An example is given in the following table:

Sample Input

4
0:(1) 1
1:(2) 2 3
2:(0)
3:(0)
5
3:(3) 1 4 2
1:(1) 0
2:(0)
0:(0)
4:(0)

Sample Output

1
2

用最少的点来防卫周围的点,转换成二分图就是最小顶点覆盖的问题,当然前提是懂得这个转换。。。

另外数据有点大,不能用邻接矩阵,然而poj上用邻接表的还过不了。。

#include 
#include
#include
#include
#include
#include
#include
#include
//#include
#include
#define INF 0x3f3f3f3f#define MAXN 1505#define Mod 10001using namespace std;bool vis[MAXN];int pre[MAXN],n; //匹配路径;vector
map[MAXN];int find(int cur){ for(int i=0; i

转载地址:http://avcvb.baihongyu.com/

你可能感兴趣的文章
mmap()函数:建立内存映射
查看>>
munmap()函数:解除内存映射
查看>>
三层交换机是否会代替路由器?
查看>>
5--TCP的状态
查看>>
6--企业常用防火墙iptables相关原理详解
查看>>
7--企业常用防火墙iptables核心配置讲解
查看>>
1.block_inode
查看>>
2.Linux文件和目录之间对应关系
查看>>
4.硬链接和软链接
查看>>
线性表的长度为10,在最坏情况下,冒泡排序需要比较次数为()----腾讯2016研发工程师在线模拟笔试题
查看>>
22个顶点的连通图中边的条数至少为()----腾讯2016研发工程师在线模拟笔试题
查看>>
有36辆自动赛车和6条跑道,没有计时器的前提下,最少用几次比赛可以筛选出最快的三辆赛车?----腾讯2016研发工程师在线模拟笔试题
查看>>
下列哪些http方法对于服务端和用户端一定是安全的?----腾讯2016研发工程师在线模拟笔试题
查看>>
对于定义"int *p",下列哪些说明可能是正确的?----腾讯2016研发工程师在线模拟笔试题
查看>>
华为研发工程师编程题----明明的随机数(快排)
查看>>
华为研发工程师编程题----进制转换(pow函数,string.find())
查看>>
华为研发工程师编程题----汽水瓶
查看>>
以下不属于tcp连接断开的状态是?----腾讯2016研发工程师笔试题
查看>>
下面关于ICMP协议的描述中,正确的是()----腾讯2016研发工程师笔试题
查看>>
对于移动平均算法,是计算某变量之前n个数值的算术平均,正确的说法是:----腾讯2016研发工程师在线模拟笔试题
查看>>