当前位置: 首页 > news >正文

做英语趣味教具的网站/广东省疫情最新

做英语趣味教具的网站,广东省疫情最新,网站文字链接,武汉网站建设服务商题意: 给定n个人,存在上下级关系,每个人只有一个上级,求最大独立集。并判断最大独立集是否唯一 思路:d[i][0]表示以i为根的子树中,不选择第i个节点的最大独立集,f[i][0]表示以i为根的子树…

  题意:  给定n个人,存在上下级关系,每个人只有一个上级,求最大独立集。并判断最大独立集是否唯一     

  思路:d[i][0]表示以i为根的子树中,不选择第i个节点的最大独立集,f[i][0]表示以i为根的子树中,不选择第i个节点的方案是否唯一。同理,d[i][1]和f[i][1]就是选择第i个节点的情况。

  状态转移:d[i][0] = max(d[v][0], d[v][1]), d[i][1] = d[v][0];

  唯一性的转移方程见代码:

if(k == 1) { //选择节点u d[u][k] += dfs(v, 0); //不选择子节点if(!f[v][0]) f[u][k] = 0;  }else {d[u][k] += max(dfs(v, 1), dfs(v, 0));if(d[v][0] == d[v][1]) f[u][k] = 0;else if(d[v][0] > d[v][1] && !f[v][0]) f[u][k] = 0;else if(d[v][1] > d[v][0] && !f[v][1]) f[u][k] = 0;}

AC代码:

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<utility>
#include<string>
#include<iostream>
#include<map>
#include<set>
#include<vector>
#include<queue>
#include<stack>
using namespace std;
#define eps 1e-10
#define inf 0x3f3f3f3f
#define PI pair<int, int> 
const int maxn = 200 + 5;
map<string, int>name;
vector<int>son[maxn];
int cnt, d[maxn][2], f[maxn][2];int getID(string &p) {if(!name.count(p)) name[p] = cnt++;return name[p];
}int dfs(int u, int k) {f[u][k] = 1;d[u][k] = k;int n = son[u].size();for(int i = 0; i < n; ++i) {int v = son[u][i];if(k == 1) { //选择节点u d[u][k] += dfs(v, 0); //不选择子节点if(!f[v][0]) f[u][k] = 0;  }else {d[u][k] += max(dfs(v, 1), dfs(v, 0));if(d[v][0] == d[v][1]) f[u][k] = 0;else if(d[v][0] > d[v][1] && !f[v][0]) f[u][k] = 0;else if(d[v][1] > d[v][0] && !f[v][1]) f[u][k] = 0;}}return d[u][k];
}int main() {int n, root;string boss, kid;while(scanf("%d", &n) == 1 && n) {for(int i = 0; i < n; ++i) son[i].clear();name.clear();cnt = 0;cin >> boss;getID(boss);for(int i = 1; i < n; ++i) {cin >> kid >> boss;int par = getID(boss), kids = getID(kid);son[par].push_back(kids);}int ans = max(dfs(0, 0), dfs(0, 1));printf("%d ", ans);int only = 1;if(d[0][0] == d[0][1]) only = 0;else if(d[0][0] > d[0][1] && !f[0][0]) only = 0;else if(d[0][1] > d[0][0] && !f[0][1]) only = 0;if(only) printf("Yes\n");else printf("No\n");}return 0;
}

如有不当之处欢迎指出!

转载于:https://www.cnblogs.com/flyawayl/p/8305419.html

http://www.lbrq.cn/news/2341585.html

相关文章:

  • 常德德山经开区建设局网站/aso优化前景
  • 网站 头尾调用/短视频优化
  • 云南网站建设公司排名/搜索软件使用排名
  • 增城企业网站建设/广州网站优化公司排名
  • 房卡app游戏开发/小红书关键词排名优化
  • 安居客做网站/免费的短视频app大全下载
  • 动态网站后台怎么做/创建站点的步骤
  • eclipse sdk做网站/磁力搜索器下载
  • h5响应式网站模板下载/怎么弄属于自己的网站
  • 专业的赣州网站建设/百度投放广告平台
  • 大连高端模板建站/优就业seo怎么样
  • 建网站手机版/百度云建站
  • 怎么才服务器上做网站/必应搜索引擎国际版
  • 南通网站建设价格/一个万能的营销方案
  • 展台设计公司/营销型网站优化
  • 新手销售如何快速入手/微信seo排名优化软件
  • 单位网站建设费合同印花税/代写文章价格表
  • 太仓网站建设公司/seo技术分享博客
  • 做网赌需要在哪些网站投广告/网站设计框架
  • 网站实际制作步骤/网店交易平台
  • 网站文字不能复制怎么做/福建键seo排名
  • 上海远丰电商网站建设公司怎么样/微信裂变营销软件
  • 网站建设流程有几个阶段/磁力库
  • 网站开发 网站设计/公司的seo是什么意思
  • 浙江网站制作公司/网站优化外包找谁
  • 专业做网站 郑州/seo基础篇
  • 怎样做网站呢 优帮云/关键词优化报价推荐
  • 郑州动力无限网站建设/seo关键词排行优化教程
  • 北京做网站制作的公司哪家好/seo搜索优化是什么意思
  • 电子商务网站设计思路/广州seo托管
  • 2025开放原子开源生态大会 | 开源欧拉的AI原生实践与全球协作
  • sqli-labs靶场通关笔记:第18-19关 HTTP头部注入
  • React源码3:update、fiber.updateQueue对象数据结构和updateContainer()中enqueueUpdate()阶段
  • 系规备考论文:论IT服务部署实施方法
  • HTML 标题标签
  • AI驱动的软件工程(上):人机协同的设计与建模