506 - System Dependencies (UVA)

题目链接如下:

Online Judge

这道题有个小细节,explicitly installed的component,不能被implicitly removed. 

有一点拓扑排序的思想,用in[component]代表目前depend on在这个component上的component数量。

我的代码如下:

#include <iostream>
#include <string>
#include <map>
#include <vector>
#include <set>
#include <sstream>
// #define debugstruct node{std::string str;bool expli;bool exist = true;node(std::string _str): str(_str){}
};
std::string line, op, u, v;
std::map<std::string, int> in;
std::map<std::string, std::vector<std::string>> dep;
std::set<std::string> st;
std::vector<node> vec;
std::map<std::string, int> mp;void install(std::string str, bool flag){for (int i = 0; i < dep[str].size(); ++i){if (st.find(dep[str][i]) == st.end()){install(dep[str][i], false);}in[dep[str][i]]++;}printf("   Installing %s\n", str.c_str());st.insert(str);mp[str] = vec.size();vec.push_back(node(str));vec.back().expli = flag;
}void remove(std::string str){printf("   Removing %s\n", str.c_str());st.erase(str);vec[mp[str]].exist = false;for (int i = 0; i < dep[str].size(); ++i){in[dep[str][i]]--;if (!in[dep[str][i]] && !vec[mp[dep[str][i]]].expli){remove(dep[str][i]);}}
}int main(){#ifdef debugfreopen("0.txt", "r", stdin);freopen("1.txt", "w", stdout);#endifwhile (getline(std::cin, line)){in.clear();dep.clear();st.clear();vec.clear();mp.clear();do {printf("%s\n", line.c_str());std::stringstream ss(line);ss >> op;if (op == "LIST"){for (int i = 0; i < vec.size(); ++i){if (vec[i].exist){printf("   %s\n", vec[i].str.c_str());}}} else {ss >> u;if (op == "DEPEND"){while (ss >> v){dep[u].push_back(v);}} else if (op == "INSTALL"){if (st.find(u) != st.end()){printf("   %s is already installed.\n", u.c_str());} else {install(u, true);}} else if (op == "REMOVE"){if (st.find(u) == st.end()){printf("   %s is not installed.\n", u.c_str());} else if (in[u]) {printf("   %s is still needed.\n", u.c_str());} else {remove(u);}}}getline(std::cin, line);} while (line[0] != 'E');printf("%s\n", line.c_str());}#ifdef debugfclose(stdin);fclose(stdout);#endifreturn 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/607423.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

秒杀相关问题及答案(2024)

1、描述一个秒杀系统的基本架构&#xff0c;并解释其中的关键组件 一个基本的秒杀系统架构通常由以下关键组件构成&#xff1a; 前端界面&#xff1a;用户与系统交互的界面&#xff0c;提供产品页面、秒杀开始倒计时、按钮等&#xff0c;用于发起秒杀请求。 反向代理和负载均…

【Linux】Linux系统编程——Linux常用快捷键

在 Linux 中&#xff0c;特别是在使用命令行界面时&#xff0c;有许多快捷键可以提高你的工作效率。以下是一些常用的快捷键&#xff1a; 命令行编辑&#xff1a; Ctrl A&#xff1a;移动光标到行首。Ctrl E&#xff1a;移动光标到行尾。Ctrl U&#xff1a;删除光标之前到行…

PLC期末速成——顺序功能图转梯形图

一、根据顺序功能图写出梯形图程序 顺序功能图&#xff1a; 梯形图&#xff1a; 1、程序段1&#xff0c;系统运行标志M0.0的启-保-停控制电路。 2、程序段2&#xff0c;PLC上电与逆行&#xff0c;初始化脉冲M1.0激活初始化步M2.0。 3、程序段3&#xff0c;当M2.0初始化步为活…

使用Dependency Walker和Process Explorer排查瑞芯微工具软件RKPQTool.exe启动报错的问题

目录 1、问题说明 2、使用Dependency Walker查看工具程序的库依赖关系

jupyter内核错误

1、在dos窗口输入以下命令激活环境&#xff1a;anaconda activate 【py环境名&#xff0c;比如py37】&#xff08;目的是新家你一个虚拟环境&#xff09; 2、在虚拟环境py37下安装jupyter notebook&#xff0c;命令&#xff1a;pip install jupyter notebook 3、安装ipykerne…

Unity C# 枚举多选

枚举多选 &#x1f96a;例子&#x1f354;判断 &#x1f96a;例子 [System.Flags]public enum TestEnum{ None 0,Rooms 1 << 1,Walls1<<2,Objects1<<3,Slabs 1 << 4,All Rooms|Walls|Objects|Slabs}&#x1f354;判断 TestEnum test TestEnum.R…

ArcGIS中style文件的导入及lyr的文件的使用

地图是地理信息的重要载体&#xff0c;科学的配色方案可以有效地传递地理信息&#xff0c;而美观协调的配色方案也是我们进行地图符号化设计的重要内容。在日常工作中&#xff0c;我们常常苦恼于自带颜色不能满足需要或是希望使用现成的颜色模板&#xff0c;自定义配色方案导入…

Ceph源码分析-在C++中,符号““和“*“有不同的用法。

在C中&#xff0c;符号"&"和"*"有不同的用法。 "&"符号&#xff1a; 在变量声明时&#xff0c;"&"用于定义引用类型。例如&#xff1a;int a 10; int& ref a; 这里的"ref"是一个引用&#xff0c;它引用了…

css选择器有哪些?优先级?哪些属性可以继承?

面试官&#xff1a;css选择器有哪些&#xff1f;优先级&#xff1f;哪些属性可以继承&#xff1f; 一、选择器 CSS选择器是CSS规则的第一部分 它是元素和其他部分组合起来告诉浏览器哪个HTML元素应当是被选为应用规则中的CSS属性值的方式 选择器所选择的元素&#xff0c;叫做…

百度吉利合作造车生态,极越“智价比”能否带来科技平权?

文|AUTO芯球 作者|文泽 临近年关&#xff0c;车企迎来“降价潮”。为了获得更好的年终成绩单&#xff0c;包括上汽大众、比亚迪、长安汽车、智己汽车等20多家品牌推出了购车补贴、限时优惠等措施&#xff0c;优惠幅度最高近20万元。 在此背景下&#xff0c;新车发布一个多月…

深度解析分布式锁及实现方案

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…

Spark MLlib ----- ALS算法

补充 在谈ALS(Alternating Least Squares)之前首先来谈谈LS,即最小二乘法。LS算法是ALS的基础,是一种数优化技术,也是一种常用的机器学习算法,他通过最小化误差平方和寻找数据的最佳匹配,利用最小二乘法寻找最优的未知数据,保证求的数据与已知的数据误差最小。LS也被用…

Web开发:SQLsugar的安装和使用

一、安装 第一步&#xff0c;在你的项目中找到解决方案&#xff0c;右键-管理解决方案的Nuget 第二步&#xff0c;下载对应的包&#xff0c;注意你的框架是哪个就下载哪个的包&#xff0c;一个项目安装一次包即可 点击应用和确定 安装好后会显示sqlsugar的包 二、使用&#xf…

聚类分析 | Matlab实现基于RIME-DBSCAN的数据聚类可视化

聚类分析 | Matlab实现基于RIME-DBSCAN的数据聚类可视化 目录 聚类分析 | Matlab实现基于RIME-DBSCAN的数据聚类可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.聚类分析 | Matlab实现基于RIME-DBSCAN的数据聚类可视化&#xff08;完整源码和数据) 2.多特征输入&…

js实现点击音频实现播放功能

html: <div class"audioDiv" id"playButton" style"width:13vw;height: 3.5vh;"><img src"./img/yuyin.png" alt"" /><p id"countdown">4:31<p><p id"bofang">播放录音&…

深度探析卷积神经网络(CNN)在图像视觉与自然语言处理领域的应用与优势

目录 前言1 CNN网络结构与工作原理1.1 输入层1.2 卷积层1.3 最大池化层1.4 全连接层 2 应用领域2.1 图像视觉领域中CNN的应用2.2 NLP领域中CNN的应用 3 CNN的限制与未来展望3.1 CNN的挑战3.2 CNN的展望 结语 前言 卷积神经网络&#xff08;CNN&#xff09;作为一种强大的深度学…

【Spring】Spring的事务管理

前言&#xff1a; package com.aqiuo.service.impl;import com.aqiuo.dao.AccountMapper; import com.aqiuo.pojo.Account; import com.aqiuo.service.AccountService; import org.springframework.jdbc.core.JdbcTemplate;import java.sql.Connection; import java.sql.SQLEx…

CentOS 8 8.5.2111 网络在线安装系统 —— 筑梦之路

之前写过一篇关于centos 8 官方停止更新维护后解决yum源问题的文章&#xff1a; CentOS 8 停止维护后换可用yum源——筑梦之路_http://ftp.iij.ad.jp/pub/linux/centos-vault/8.5.21-CSDN博客 由于centos 8 dvd的镜像比较大&#xff0c;有时候我们根本不需要去下载一个10G以上…

网络安全之文件上传

常见文件上传点 大部分的网站和应用系统都有上传功能&#xff0c;如用户头像上传&#xff0c;图片上传&#xff0c;文档上传等。 任意文件上传漏洞 定义 由于对上传文件未作过滤或过滤机制不严 (文件后缀或类型)导致恶意用户可以上传脚本文件&#xff0c;通过上传文件可达到…

MySQL 性能优化思路和优化案例

MySQL性能优化是确保数据库高效运行的关键过程。这通常涉及到多个方面&#xff0c;如查询性能、索引策略、系统配置、硬件资源等。以下是一些优化思路及其案例 优化思路 1. 查询优化 思路: 重写低效的查询&#xff0c;避免使用子查询&#xff0c;改用连接&#xff08;JOIN&…