HDU1054-Strategic Game
Strategic Game
Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 4114 Accepted Submission(s): 1824
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:
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)
2
#include<vector>
#include<cstring>
#define N 1505
using namespace std;
int dp[N][2],visit[N];
vector<int> V[N];
int min(int a,int b)
{
return a>b?b:a;
}
void dfs(int k)
{
int i;
for(i=0;i<V[k].size();i++)
{
if(visit[V[k][i]] == 0) //判断是否为子节点
{
visit[ V[k][i] ] = 1;
dfs(V[k][i]);
visit[ V[k][i] ] = 0;
}
}
int s1=0,s2=0;
for(i=0;i<V[k].size();i++)
{
if(visit[V[k][i]] == 0) //判断是否为子节点
{
s1 += min(dp[ V[k][i] ][0] , dp[V[k][i]][1]);
s2 += dp[ V[k][i] ][1];
}
}
dp[k][1] = s1+1;
dp[k][0] = s2;
}
int main()
{
int n,i,j,t;
char a[20];
while(scanf("%d",&n)!=EOF)
{
memset(visit,0,sizeof(visit));
visit[1]=1;
for(i=0;i<n;i++)
V[i].clear();
for(i=0;i<n;i++)
{
scanf("%s",a);
int len=strlen(a);
int cc=0,tt=0;
j=0;
while(a[j]!='(')
{
if(a[j]>='0' && a[j]<='9')
cc=cc*10+a[j]-'0';
j++;
}
while(a[j]!=')')
{
if(a[j]>='0' && a[j]<='9')
tt=tt*10+a[j]-'0';
j++;
}
for(j=0;j<tt;j++)
{
scanf("%d",&t);
V[cc].push_back(t);
V[t].push_back(cc);
}
}
memset(dp,0,sizeof(dp));
dfs(1);
printf("%d\n",min(dp[1][0] , dp[1][1]));
}
return 0;
}
HDU1054-Strategic Game的更多相关文章
- HDU1054 Strategic Game —— 最小点覆盖 or 树形DP
题目链接:https://vjudge.net/problem/HDU-1054 Strategic Game Time Limit: 20000/10000 MS (Java/Others) ...
- HDU1054 Strategic Game——匈牙利算法
Strategic Game Bob enjoys playing computer games, especially strategic games, but sometimes he canno ...
- hdu---(1054)Strategic Game(最小覆盖边)
Strategic Game Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- Hdu1054 Strategic Game(最小覆盖点集)
Strategic Game Problem Description Bob enjoys playing computer games, especially strategic games, bu ...
- HDU1054 Strategic Game(最小点覆盖)
Strategic Game Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- hdu1054 Strategic Game 树形DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1054 思路:树形DP,用二分匹配也能解决 定义dp[root][1],表示以root 为根结点的子树且 ...
- hdu1054 树形dp&&二分图
B - Strategic Game Time Limit:10000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u ...
- DDD:Strategic Domain Driven Design with Context Mapping
Introduction Many approaches to object oriented modeling tend not to scale well when the application ...
- poj 1463 Strategic game DP
题目地址:http://poj.org/problem?id=1463 题目: Strategic game Time Limit: 2000MS Memory Limit: 10000K Tot ...
- UVA 1292 十二 Strategic game
Strategic game Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit Sta ...
随机推荐
- Web--Utils
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Preparing for the interview of FLAG and USDA
7,Dynamic Programming 1,Unique Paths A robot is located at the top-left corner of a m x n grid (mark ...
- PAT T1016 Uniqueness of MST
dfs判断连通块的数量,prim算法建立最小生成树并判断是否唯一~ #include<bits/stdc++.h> using namespace std; ; const int inf ...
- 解决安装PyMySQL一直停在Building wheels for collected package:cryptography, cffi, pycparser的问题
我的运行环境为: 硬件:树莓派3b 系统:ubuntu_meta_16.04.2 因为项目需要,我在树莓派上搭建了基于python编程的Django的web框架,需要从MySQL中读取树莓派以及传感器 ...
- 吴裕雄--天生自然PythonDjangoWeb企业开发:学员管理系统- 前台
开发首页 做一个简单的用户提交申请的表单页面. 首先在student/views.py文件中编写下面的代码: # -*- coding: utf-8 -*- from __future__ impor ...
- centos7一步一步搭建docker phpmyadmin 及nginx配置phpmyadmin非根目录重点讲解
系统环境:centos7.7 镜像image 版本:phpmyadmin/phpmyadmin(截止2020.01.10最新版) 参考文章:https://blog.csdn.net/a258929 ...
- 32 commons-lang包学习
maven依赖 <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lan ...
- Number()、parseInt()、parseFloat()、~~、~
一.Number() 如果是Boolean值,true和false值将分别被转换为1和0. 如果是数字值,只是简单的传入和返回. 如果是null值,返回0. 如果是undefined,返回NaN. 如 ...
- 2016 黑客必备的Android应用都有哪些?
免责声明:本站所发布的此份清单仅供学习之用.我们不支持读者利用其中的任何工具进行任何不道德的恶意攻击行为. 根据业界的一系列评测以及亲身经验,我们整理出了这份最佳Android黑客应用清单.除了对应用 ...
- ROS学习笔记11-写一个简单的服务和客户端(C++版本)
本文主要来源于:http://wiki.ros.org/ROS/Tutorials/WritingServiceClient%28c%2B%2B%29 写一个服务节点.在创建消息和服务中,我们创建了一 ...