HDU 1054 Strategic Game 二分图最小点覆盖

E - Strategic Game (HDU - 1054 )(最小顶点覆盖)(匈牙利算法模板)(树形DP) 题意:鲍勃喜欢玩电脑游戏,特别是战略游戏,但有时他无法找到解决方案,速度不够快,那么他很伤心。现在,他有以下的问题。他必须捍卫一个中世纪的城市,形成了树的道路。他把战士的最低数量的节点上,使他们可以观察所有的边。你能帮助他吗?士兵,鲍勃把一个给定的树,你的程序应该发现的最小数目。输入文件包含多个数据集的文本格式。 我们来先了解一下什么是最小顶点覆盖; 图G的顶点覆盖是一个顶点集合V,使得... 阅读详情
题意:给你一颗树,一个点可以占领跟它连的所有的边。问最少需要多少个这样的点?
思路:一眼就是染色之后二分图最小点覆盖。
坑点:T得我不能自理,发现是边数组开小了,我加的双向边,也是爽。

http://acm.hdu.edu.cn/showproblem.php?pid=1054

/*********************************************
    Problem : HDU 1054
    Author  : NMfloat
    InkTime (c) NM . All Rights Reserved .
********************************************/

#include <map>
#include <set>
#include <queue>
#include <cmath>
#include <ctime>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>

#define rep(i,a,b)  for(int i = a ; i <= b ; i ++)
#define rrep(i,a,b) for(int i = b ; i >= a ; i --)
#define repE(p,u) for(Edge * p = G[u].first ; p ; p = p -> next)
#define cls(a,x)   memset(a,x,sizeof(a))
#define eps 1e-8

using namespace std;

const int MOD = 1e9+7;
const int INF = 0x3f3f3f3f;
const int MAXN = 2000;
const int MAXE = 4000;

typedef long long LL;
typedef unsigned long long ULL;

struct Edge { //记录边
    int to;
    Edge * next;
}E[MAXE],E1[MAXE],*EE;

struct Gragh { //记录图的结点
    Edge * first;
}G[MAXN],G1[MAXN];

int N,M;//二分图左右结点的个数
bool visit[MAXN];
int match[MAXN];//v2中匹配的情况
int C[MAXN];
int X[MAXN];//重新编号。
int Y[MAXN];

void addedge(int u,int v) { //加边
    EE->to = v ; EE -> next = G[u].first ; G[u].first = EE ++;
    //EE->to = u ; EE -> next = G[v].first ; G[v].first = EE ++;
}

void addedge1(int u,int v) { //加边
    EE->to = v ; EE -> next = G1[u].first ; G1[u].first = EE ++;
    EE->to = u ; EE -> next = G1[v].first ; G1[v].first = EE ++;
}

int T,n,m,k;

void init() {
    EE = E1; N = M = 0;
    cls(G,0);
    cls(G1,0);
}

bool find_path(int u) {
    int v;
    repE(p,u) {
        v = p->to;
        if(!visit[v]) {
            visit[v] = 1;
            if(match[v] == -1 || find_path(match[v])) {//v没有匹配或者v可以找到另一条路径
                match[v] = u;
                return true;
            }
        }
    }
    return false;
}

int Max_match() {
    cls(match,-1);
    int cnt = 0;
    rep(i,1,N) {
        cls(visit,0);
        if(find_path(i)) cnt ++;
    }
    return cnt;
}

void dfs(int u,int color,int fa = 0) {
    C[u] = color % 2;
    if(C[u] == 0) X[u] = ++N;//重新编号。
    else Y[u] = ++M; 
    for(Edge * p = G1[u].first;p;p=p->next) {
        int v = p->to;
        if(v != fa) dfs(v,color+1,u);
    }
}

void create_G(int u,int fa = 0) {
    for(Edge * p = G1[u].first;p;p=p->next) {
        int v = p->to;
        if(v != fa)
        {
            if(C[u] == 0) addedge(X[u],Y[v]+N);
            else addedge(X[v],Y[u]+N);
            create_G(v,u);
        }
    }
}

void input() {
    int fa , num , son;
    rep(i,1,n) {
        scanf("%d:(%d)",&fa,&num);
        rep(i,1,num) {
            scanf("%d",&son);
            addedge1(fa,son);
        }
    }
}

void solve() {
    //染色。0是X部;
    dfs(0,0);
    //rep(i,0,n-1) printf("%d ",C[i]);
    //printf("%d\n",N);
    EE = E;
    create_G(0);
    printf("%d\n",Max_match());
}

int main(void) {
    //freopen("a.in","r",stdin);
    while(~scanf("%d",&n)) {
        init();
        input();
        solve();
    }
    return 0;
}
【毕设】基于LoRa的物联网控制器:从原理图到PCB的完整硬件设计指南 本文提供了一份完整的基于LoRa的物联网控制器硬件设计指南,涵盖从系统框图、原理图设计到PCB布局布线的全流程。详细讲解了电源电路、单片机最小系统、信号接口以及LoRa无线模块等核心模块的设计要点与抗干扰技巧,并分享了实用的调试心得,旨在帮助电子、物联网专业学生顺利完成毕业设计,掌握低功耗远距离物联网节点的硬件开发实践。 阅读详情

相关推荐

超详细MySQL 8.0安装与配置

MySQL的安装与配置 还不会安装MySQL的同学们,还不会配置MySQL的同学们,赶紧按照下面步骤操作起来,超详细安装步骤如下: 进入MySQL官网 1、点击download 2、点击MySQL Community Server 3、选好选项点击go to download page 4、点击download 5、点击no thanks,just start my download 6、选Server only,点击Next 7、点击Execute 8、点击

Turniper的博客 8752

hdu 1054 最大匹配数等于最小顶点覆盖数

题意:一个无向树,n个点,问最少多少个点可以使每个边都与这些点相连。 题解:最大匹配数 1.最大匹配数等于最小顶点覆盖数。画一个图思考一下就知道了。 2.套用匈牙利算法模板。 3.注意无向图最后匹配数需除2。因为是双边,调试一下就知道了。 #include&lt;stdio.h&gt; #include&lt;string.h&gt; #include&lt;stdio.h&gt; #...

Irving0323的博客 389

手把手教你构建轻量级CLIP模型:从理论到实践

本文手把手教你从零构建一个轻量级CLIP模型,深入解析其核心原理——对比学习,并提供完整的代码实践。通过精简的模型架构、数据准备和训练循环实现,帮助读者彻底理解多模态模型如何让图像与文本在共享空间中对齐,为学习更复杂的AI模型打下坚实基础。

weixin_29100927的博客 324

hdu1054 二分图最小点覆盖数

最小点覆盖数:在二分图中,选取最少的点数,使这些点和所有的边都有关联(把所有的边都覆盖) 最小点覆盖数 = 最大匹配数 题目中给出的树形结构,因此可以认为树形结构即为2分图。求最大匹配数时从所有的点集出发,得到的最大匹配数需要除以2. #include #include

跟acm say goodbye 934

电商客服效率翻倍!手把手教你用影刀RPA+AI搭建智能回复系统(附实战配置)

本文详细介绍了如何利用影刀RPA+AI技术搭建电商智能客服系统,实现24小时在线回复,大幅提升客服效率。通过零代码配置、Excel词库管理和AI语义理解,系统能处理80%常规咨询,响应速度稳定在3秒内,特别适合中小电商降低成本并提升服务质量。

weixin_42520661的博客 547

crazyswarm无人机集群搭建笔记(一)资料索引

crazyswarm无人机搭建笔记:资料收集

Coco_range的博客 806

hdu 1054(最小顶点覆盖)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1054 思路:最小顶点覆盖 == 最大匹配(双向图)/2。。。不过一开始是用邻接矩阵,傻傻的TLE。。。然后搞了个vector,建立邻接表。。。 View Code 1 #include&lt;iostream&gt; 2 #include&lt;vector&gt; 3 cons...

weixin_33901641的博客 129

基于Dify与DeepSeek构建中医智能问答工作流:从知识库到精准处方

本文详细介绍了如何利用Dify与DeepSeek构建中医智能问答工作流,实现从知识库构建到精准处方的全流程。通过模型编排和知识检索技术,系统能够结合中医辨证思维与AI推理能力,为基层医师、学生和爱好者提供结构化诊疗建议。文章重点分享了知识库选材、症状标准化处理、智能检索与辨证推理等核心环节的实战经验。

weixin_29062255的博客 251

HDU 1054 最小顶点覆盖 (树形dp)

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. H

AK_HuangYC的博客 742

【Python&RS】Rasterio库安装+基础函数使用教程

Rasterio是一个Python库,专门用于栅格数据的读写操作。它支持多种栅格数据格式,如GeoTIFF、ENVI和HDF5,为处理和分析栅格数据提供了强大的工具。RasterIO适用于各种栅格数据应用,如卫星遥感、地图制作等。这篇文章跟大家介绍一下Rasterio库的安装以及一些基本函数的使用教程,附带源码。

Remote Sensing迷途小书童 1万+

DPABISurf使用教材

严老师的官方教程:http://rfmri.org/Course DPABISurf版本:dpabi50docker.tar.gz MATLAB版本:2018b 一、数据准备 (1)如果是数据的DICOM格式,整理成以下格式(注意文件夹的命名方式): 如果觉得不是很清楚,可以在官网下载Demo数据(http://rfmri.org/DemoData),参照里面的文件格式进行整理即可。 (2)如果数据是nii格式,整理成以下格式: 这里没有使用官网的demo数据进行学习,而是..

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 8514

HDU 1054 Strategic Game 树形DP

HDU 1054 Strategic Gam 树形DP 学校CSP模拟考试的题目,在这道题的基础上稍微进行了一点修改,即有一个结点是指挥部,必须有士兵把守,见下面问题描述。HDU这道题稍加修改即可,代码当中做了注释。 【问题描述】 现有一城市,假设所有的道路可形成一个具有n个节点的树。为了守卫这个城市,需要有士兵看守所有的道路。如果在一个节点上放置一个士兵,那么和这个节点相连的所有道路都能被看守住。在这n个节点中,指挥部在其中一个节点上,必须有士兵看守。请你设计一个部署方案,为了看守住所有道路,最少需要部署

weixin_46283740的博客 454

星敏感器:卫星姿态测量的“星空导航仪”

在卫星、航天器和深空探测器的姿态控制系统中,星敏感器(Star Tracker) 是最精确的姿态测量设备之一。它通过识别恒星的位置,计算出航天器在惯性空间中的三轴姿态,精度可达 角秒级(arcsecond),是许多高精度任务(如遥感、天文观测、深空探测)的核心传感器。

ScilogyHunter的博客 3690

HDU - 1054 Strategic Game(最小点覆盖-二分图最大匹配)

题目链接:点击查看 题目大意:给出一棵树,现在要在节点上放置士兵,每个士兵可以监视与其所在的节点直接相连的节点,问最少需要多少个士兵才能将整棵树都监视到 题目分析:求最少的节点,以保证每条边都有一个端点在所选节点中,这不就是标准的二分图的最小点覆盖,最小点覆盖等于二分图最大匹配数,对于这个题目而言我们需要建立无向图,所以最后答案记得除以2 代码: #include<iostream...

Falcon的博客 380

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Strategic Game HDU - 1054(二分图匹配+最小点覆盖)

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 medieva...

weixin_43740907的博客 247

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

最小点覆盖 -- HDU 1054 Strategic Game

HDU 1054 Strategic Game 题意: 给你一个n个节点的多叉树,士兵站在节点上,问你至少要多少士兵就能监视多叉树上的所有边。 思路: 最小点覆盖裸题,最小点覆盖 = 二分图最大匹配。 code: #include<iostream> #include<cstdio> #include<cstdlib> using namespace std; const int maxn = 1505; struct edge{ int u, v, next; } g

dajiangyou123456的博客 188

hdu 1054 Strategic Game 二分图最小点覆盖

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1054 题意: 给出一个无向图,求最小点覆盖。 思路: 用网络流来做设立一个超级源点和一个超级汇点。 每个点拆成i和i'。 从超级源点向点i连一条边,容量为1。 从i’向超级汇点连一条边,容量为1。 从i向i'连一条边,容量为正无穷。 然后求最小割/2。因为拆点拆成了2个。 也可以用...

weixin_30270561的博客 111

hdu 1054 Strategic Game(最小点覆盖集转换成双向二分图)

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 medieva

LSS 728

HDU 1054 Strategic Game(二分图最小点覆盖)

Strategic Game Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2916    Accepted Submission(s): 1217 Problem Description Bob enjoys playing ...

weixin_33971205的博客 123

hdu 1054 Strategic Game 二分图的匹配,最小点覆盖数

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 medieva

winycg的博客 605

HDU 1054 Strategic Game (二分图最小点覆盖)

Strategic Game Time Limit: 20000/10000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) Description Bob enjoys playing computer games, especially strategic games, but sometimes he cann...

weixin_30408739的博客 103

HDU 1054 Strategic Game(二分图最小点覆盖 或者 树形DP)

描述: Strategic Game Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 1760    Accepted Submission(s): 742 Problem Description Bob enj

魔笛手的博客 495

HDU 1054 Strategic Game (最小点覆盖)【二分图匹配】

<题目链接> 题目大意:鲍勃喜欢玩电脑游戏,特别是战略游戏,但有时他无法找到解决方案,速度不够快,那么他很伤心。现在,他有以下的问题。他必须捍卫一个中世纪的城市,形成了树的道路。他把战士的最低数量的节点上,使他们可以观察所有的边。你能帮助他吗?士兵,鲍勃把一个给定的树,你的程序应该发现的最小数目。 解题分析: 最小点覆盖模板题,用最少的点来覆盖所有的边。建立无向图,然后求出其最大...

weixin_30576859的博客 104

HDU - 1054 Strategic Game(二分图最小点覆盖/树形dp)

d.一颗树,选最少的点覆盖所有边 s. 1.可以转成二分图的最小点覆盖来做。不过转换后要把匹配数除以2,这个待细看。 2.也可以用树形dp c.匈牙利算法(邻接表,用vector实现): /* 用STL中的vector建立邻接表实现匈牙利算法 效率比较高 处理点比较多的效率很高。1500的点都没有问题 */ #include<iostream> #in...

weixin_30852419的博客 118

hdoj 1054 Strategic Game 最小点覆盖模版题dfs方式(Java版)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1054 题目: Problem Description Bob enjoys playing computer games, especially strategic games, but sometimes he cannot find the solution fast enough and the...

仰望星空的博客 240

HDU 1054Strategic Game(一般图匹配之最小点覆盖)

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1054 这题水题,因为meiy

scf0920 2015

HDU - 1054 Strategic Game 最小点覆盖

一、内容 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 m...

Tizzi的博客 641
上一篇: HDU 1074 Doing Homework DP 状态压缩
下一篇: HDU 1181 变形课 DFS
_NMfloat_
博客等级 码龄12年 7粉丝 315原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值