首页 > 其他分享 >【复习】搜索

【复习】搜索

时间:2022-08-16 13:34:49浏览次数:43  
标签:复习 int dfs vis MAXN ans 搜索 now

Cleaning Robot

数独游戏

城市距离

Bloxorz I

部落卫队

Weather Forecast

生日蛋糕

Best Sequence

Children of the Candy Corn

Description

给出一张 \(n\) 个点 \(m\) 条边的有向图。对于每条边 \((a, b)\),如果之前经过 \(c\) 点,那么费用为 \(p\),否则为 \(r\)。求 \(1\) 到 \(n\) 的最小费用。如果无法到达则输出 "impossible"。

Solution

其实这是一道最短路的变形,但是由于 \(n\) 的范围很小,可以直接搜索(DFS),而且每条边可以走多次,我们只需加以限制即可。

Code

#include <cstdio>
const int MAXN = 15, INF = 1e9;
int n, m, ans;
int a[MAXN], b[MAXN], c[MAXN], p[MAXN], r[MAXN];
int vis[MAXN];
void dfs(int k, int now) {
	if (now >= ans)
		return ;
	if (k == n) {
		ans = now;
		return ;
	}
	for (int i = 1; i <= m; i++) {
		if (a[i] == k) {
			if (vis[b[i]] >= 3)
				continue;
			vis[b[i]]++;
			if (b[i] == c[i] && vis[b[i]] == 1)
				dfs(b[i], now + r[i]);
			else
				dfs(b[i], now + (vis[c[i]] ? p[i] : r[i]));
			vis[b[i]]--;
		}
	}
}
int main() {
	scanf("%d %d", &n, &m);
	for (int i = 1; i <= m; i++)
		scanf("%d %d %d %d %d", &a[i], &b[i], &c[i], &p[i], &r[i]);
	vis[1] = 1;
	ans = INF;
	dfs(1, 0);
	if (ans == INF)
		return printf("impossible"), 0;
	printf("%d", ans);
	return 0;
}

标签:复习,int,dfs,vis,MAXN,ans,搜索,now
From: https://www.cnblogs.com/zhouziyi/p/16591236.html

相关文章

  • C#查询指定关键词和域名的百度搜索排名
    publicstaticvoidgetRank(){varpersonFaker=newFaker<RandomUA>().RuleFor(x=>x.userAgent,x=>x.Internet.UserAgent()......
  • Day3(复习:java流程控制)
    Java流程控制 Scanner对象用来获取用户的输入基础语法:Scanners=newScanner(System.in) 通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取器要......
  • element下拉框远程搜索debounce防抖控制
    一、需求:下拉框支持远程搜索,根据用户输入字符,调接口获取数据渲染到下拉列表上,供用户选择。二、为什么要做防抖控制?在做远程搜索时,如果每输入1个字就调用1次接口,就会频繁......
  • js实现简单的产品搜索功能
      实现产品搜索功能的表格                div和tbody部分:                    js......
  • LyScript 批量搜索反汇编特征
    LyScript插件实现对特定汇编指令片段的批量搜索功能,用户传入一个汇编指令列表,然后循环搜索该列表内的所有指令特征,如果找到了,则返回该指令的内存地址。得到汇编指令机器......
  • Day2(复习java基础知识)
    Java基础java是一门强类型语言要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用 Java的特性简单性面向对象可移植性高性能分布式动态......
  • 详解二分查找算法 && leetcode35. 搜索插入位置
    https://blog.csdn.net/weixin_39126199/article/details/118785065 https://leetcode.cn/problems/search-insert-position/classSolution{public:intsearc......
  • 红黑树:基于平衡搜索树的效率改进
    出现背景平衡二叉树解决了搜索二叉树可能过长导致查找次数过多的问题,但是随着不断的插入和删除,平衡二叉树算法需要不断的旋转以达到最佳结构,这个旋转操作浪费了不少时间,平......
  • leetcode(14)矩阵搜索系列题目
    64.最小路径和动态规划classSolution:defminPathSum(self,grid:List[List[int]])->int:m,n=len(grid),len(grid[0])res=0......
  • uniapp顶部搜索图标实现(App端,小程序不支持)
    这两个部位的图标可以在page.json中配置,不需要单独编写(小程序中需要手动编写,通过flex布局实现)1、在pages.json中的pages-->style-->app-plus中添加titleNView2、font......