题解:P14079 [GESP202509 八级] 最短距离
a_gold_TomAndJerry · · 题解
题意:对于一个有
一眼看到以为是Floyd板子,然后读了发现只是个简单的数学题。
设最小路径长度为
考虑2种情况:
对于第1种:当直接连边时,
对于第2种:当直接连边时,
特殊地,当
然后分类讨论即可。
AC Code:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,p,q;
int main(){
scanf("%lld%lld%lld",&n,&p,&q);
for(int i=1;i<=n;++i){
ll a,b;
scanf("%lld%lld",&a,&b);
if(a==b){
cout<<0<<'\n';
continue;
}
if(a==1||b==1){
cout<<p<<'\n';
continue;
}
if(__gcd(a,b)==1){
cout<<min(2*q,p)<<'\n';
continue;
}
cout<<min(2*p,q)<<'\n';
}
return 0;
}