思路:
容易得出质因子最多不过2种。
而且像8这种可以直接变成2
分类讨论:
1,如果有1,直接输出1
2,如果有两个刚好组合成的,输出2
3,否则就把每个数拆成质因数相乘,然后质因数之间连边,最后判断最小的环。
质因子最大不会超过1000,然后设计一个bfs找环就行了。从x开始bfs,记录节点深度d,如果走过了,那答案就是 d i + d j + 1 d_i+d_j+1 di+dj+1
最后取min就行
c o d e code code
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 10;
int n, m, ans = 1e9;
int a[MAXN], f[MAXN][2];
vector<int> b[MAXN * 10