Friendly Spiders

套路最短路。

考虑两数 a,ba,b,若 gcd(a,b)1\gcd(a,b) \neq 1,那么 a,ba,b 一定有公共质因数。

于是可以考虑对于每一个点 ii,向 aia_i 的所有质因数连边,然后广搜即可。

// LUOGU_RID: 99311626
#include <bits/stdc++.h>
using namespace std;

#define ll long long

const int N = 6e5 + 5, INF = 2e9, MOD = 1e9 + 7;

inline int read()
{
	int op = 1, x = 0;
	char ch = getchar();
	while ((ch < '0' || ch > '9') && ch != '-') ch = getchar();
	while (ch == '-')
	{
		op = -op;
		ch = getchar();
	}
	while (ch >= '0' and ch <= '9')
	{
		x = (x << 1) + (x << 3) + (ch ^ 48);
		ch = getchar();
	}
	return x * op;
}

inline void write(int x)
{
	if (x < 0) putchar('-'), x = -x;
	if (x > 9) write(x / 10);
	putchar(x % 10 + '0');
}

int n, m, idx, a[N];
int id[N];
vector<int> G[N];

int s, t;
int dis[N], from[N];

void bfs()
{
	queue<int> q;
	memset(dis, 0x7f, sizeof dis);
	dis[s]=0;
	q.push(s);
	while(q.size())
	{
		int u =q.front();
		q.pop();
		for(int j:G[u])
		{
			if (dis[j]==dis[0])
			{
				dis[j]=dis[u]+1;
				q.push(j);
				from[j]=u;
			}
		}
	}
}

int main()
{
	// freopen("*.in", "r", stdin);
	// freopen("*.out", "w", stdout);
	scanf("%d", &n);
	idx = n;
	for (int i = 1; i <= n; i++)
	{
		scanf("%d", &a[i]);
		int rr = a[i], p = a[i];
		for (int j = 2; j * j <= rr; j++)
		{
			int c = 0;
			while (p % j == 0)
			{
				c++;
				p /= j;
			}
			if (c)
			{
				int nx = id[j] == 0 ? (id[j] = ++idx) : id[j];
				G[i].emplace_back(nx);
				G[nx].emplace_back(i);
			}
		}
		if (p > 1)
		{
			int c = p;
			int nx = id[c] == 0 ? (id[c] = ++idx) : id[c];
			G[i].emplace_back(nx);
			G[nx].emplace_back(i);
		}
	}
	scanf("%d%d", &s, &t);
	bfs();
	if (dis[t] == dis[0]) printf("-1\n");
	else 
	{
		printf("%d\n", dis[t] / 2 + 1);
		vector<int> ans;
		do
		{ // 1
			ans.emplace_back(t);
			t = from[t];
		} while (t);
		reverse(ans.begin(), ans.end());
		for (int i : ans) 
		{
			if (i <= n) printf("%d ", i);
		}
		printf("\n");
	}
	return 0;
}
posted @   HappyBobb  阅读(4)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示