文章

26

粉丝

0

获赞

82

访问

2.8k

头像
走路还是坐公交 题解,感觉逻辑挺清晰喵:
P1678 中南大学机试题
发布于2026年2月15日 11:36
阅读数 165

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 9;
int mp[N];
bool vis[N];

bool inmp(int x)
{
	if(x < 1 || x > 1e5) return false;
	if(vis[x]) return false;
	return true;
} //边界判断

void bfs(int N, int K)
{
	bool flag = false;
	int step = 0; queue<int> q;
	q.push(N); vis[N] = true; mp[N] = step;
	while(!q.empty() && !vis[K])
	{
		int ssize = q.size();  //辅助判现在是第几个step喵
		step ++;
		for(int i = 1; i <= ssize; i ++)
		{
			
			if(vis[K]) {flag = true; break;}
			int ele = q.front(); q.pop();
			int temp = ele + 1; //第一种
			if(inmp(temp))
			{
				q.push(temp);
				vis[temp] = true;
				mp[temp] = step;
			}
			
			temp = ele - 1; //第二种
			if(inmp(temp))
			{
				q.push(temp);
				vis[temp] = true;
				mp[temp] = step;
			}
			
			temp = ele * 2; //第三种
			if(inmp(temp))
			{
				q.push(temp);
				vis[temp] = true;
				mp[temp] = step;
			}
		}
		
		if(flag) break;
		
		
	}
	cout <&...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发