E - Souvenir(图论典型例题)

这篇具有很好参考价值的文章主要介绍了E - Souvenir(图论典型例题)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

E - Souvenir(图论典型例题),图论,算法

思路:对于有很多询问的题,一般都是先初始化。我们求出每个点到其他点的最短路径以及相同路径下最大的价值和即可。

代码:文章来源地址https://www.toymoban.com/news/detail-822401.html

#include <bits/stdc++.h>
#define pb push_back
#define a first
#define b second
using namespace std;
typedef long long int ll;
typedef pair <int,int> P;
typedef unsigned long long ull;

char str[1005];
int main(){
	int n;
	scanf("%d",&n);
	vector <ll> A(n);
	for(int i=0;i<n;i++) scanf("%lld",&A[i]);
	vector < vector<int> > mp(n);
	for(int i=0;i<n;i++){
		scanf("%s",&str);
		mp[i].resize(n);
		for(int j=0;j<n;j++){
			mp[i][j]=str[j]=='Y';
		}
		mp[i][i]=1;
	}
	ll inf=1000000000000000;
	vector < vector<ll> > ans(n);
	vector < vector<int> > vd(n);
	for(int i=0;i<n;i++){
		ans[i].resize(n);
		for(int j=0;j<n;j++) ans[i][j]=-inf;
		vector <int> dist(n,n+1);
		queue <int> que;
		dist[i]=0;
		ans[i][i]=A[i];
		que.push(i);
		while(!que.empty()){
			int v=que.front();que.pop();
			for(int j=0;j<n;j++){
				if(mp[v][j]){
					if(dist[j]==n+1){
						dist[j]=dist[v]+1;
						que.push(j);
					}
					if(dist[j]==dist[v]+1){
						ans[i][j]=max(ans[i][j],ans[i][v]+A[j]);
					}
				}
			}
		}
		vd[i]=dist;
	}
	int Q;
	scanf("%d",&Q);
	for(int i=0;i<Q;i++){
		int u,v;
		scanf("%d%d",&u,&v);u--,v--;
		if(ans[u][v]==-inf) puts("Impossible");
		else printf("%d %lld\n",vd[u][v],ans[u][v]);
	}
}

到了这里,关于E - Souvenir(图论典型例题)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 浅谈图论——迪杰斯特拉算法(leetcode例题,C++演示)

    如果你想问这个世界上什么算法是最牛逼的?博主是回答不上来的。但是,如果你问博主 什么数据结构是最牛逼 ?博主个人认为 图是最牛逼的数据结构 。因为很多的问题,都可以用图这种数据结构来表示。链表、树这种数据结构博主认为可以看成一种 特殊的图 。所以,博

    2024年02月20日
    浏览(74)
  • C语言:指针典型例题详解

    基于对前面的深入理解指针1,2,3,4的学习,本篇文章带来指针的典型例题。俗话说:光说不练假把戏。在指针的学习过程中最重要的还是要学会动手实操。 学习本节内容之前,先复习一下涉及的相关知识,以便更好的理解。 除了博主指针专题的博文---《深入理解指针1,2,3,4》之

    2024年04月09日
    浏览(30)
  • 图论基础知识 并查集/例题

    学习记录自代码随想录 并查集常用来解决连通性问题。 判断两个元素是否在同一个集合里的时候,要想到用并查集。 并查集主要有两个功能: 1.将两个元素添加到一个集合中; 2.判断两个元素在不在同一个集合。 例题:20240410 Huawei机考

    2024年04月25日
    浏览(27)
  • 一张图带你看完图论第五章(包含全部考点,含定义、定理、公式、推导证明和所有例题)

    付费大佬可以联系我把你们加入思维导图协作,看更加具体清楚地思维导图/敬礼 5.1 匹配 匹配(边独立集)M是G的不相邻边组成的边子集(无环) 饱和点 v是匹配M中某边的端点,则称v为M饱和点 完美匹配 G中每个顶点均为M饱和点,则M为G的完美匹配 最优匹配 在赋权完全偶图

    2024年02月09日
    浏览(40)
  • 遗传算法及基于该算法的典型问题的求解实践

        遗传算法是一个很有用的工具,它可以帮我们解决生活和科研中的诸多问题。最近在看波束形成相关内容时了解到可以用这个算法来优化阵元激励以压低旁瓣,于是特地了解和学习了一下这个算法,觉得蛮有意思的,于是把这两天关于该算法的学习和实践的内容总结成了

    2024年03月21日
    浏览(37)
  • 数学建模软件及算法模型典型问题汇总

    一、 软件篇 编程 、MATLAB(物理建模)、python(数据分析)、R、其他(SPSS、Stata、Origin) 这里其实还有一个 Lingo 软件,不过我不推荐,有更好的替代方案,就是 Yalmip 工具箱+OPTI 工具箱+gurobi 求解器,Yalmip 是基于 matlab 的求解规划问题的高级建模语言,OPTI 提供众多 开源的规

    2024年04月17日
    浏览(38)
  • 最优化:建模、算法与理论(典型优化问题

    4.1.1 基本形式和应用背景 再次说明一下,其实这本书很多的内容之前肯定大家都学过,但是我觉得这本书和我们之前学的东西的出发角度不一样,他更偏向数学,也多一个角度让我们去理解 线性规划问题的一般形式如下: min ⁡ x ∈ R n c T x s . t . A x = b G x ≤ e (4.1.1) min_{x{

    2024年02月09日
    浏览(197)
  • 数字图像去噪典型算法及matlab实现

    数字图像去噪典型算法及 matlab 实现 图像去噪是数字图像处理中的重要环节和步骤。去噪效果的好坏直接影响到后续的图像处理工作如图像分割、边缘检测等。图像信号在产生、传输过程中都可能会受到噪声的污染,一般数字图像系统中的常见噪声主要有:高斯噪声(主要由

    2024年02月03日
    浏览(29)
  • 【附代码】SSVEP解码算法 - 典型相关分析(CCA)

    典型相关分析是数据分析领域中非常常用的统计分析方法,而清华大学的林中林将CCA应用到了SSVEP中,并得到了较好的结果,成为SSVEP识别的经典算法。 Z. Lin, C. Zhang, W. Wu and X. Gao, “Frequency recognition based on canonical correlation analysis for SSVEP-based BCIs,” in IEEE Transactions on Biomedical

    2024年02月11日
    浏览(24)
  • 回溯算法例题(剪枝策略)

    链接: 77. 组合 链接: 216. 组合总和 III 链接: 17. 电话号码的字母组合 链接: 39. 组合总和 注:使用剪枝必须对原数组进行排序 链接: 40. 组合总和 II 链接: 131. 分割回文串 链接: 93. 复原 IP 地址 链接: 78. 子集 链接: 90. 子集 II 链接: 46. 全排列 链接: 47. 全排列 II 链接: 51. N 皇后 链接

    2024年02月04日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包