CF 742C
程序员文章站
2022-05-16 18:36:35
...
题目:
今天心情不好不写题目
题解:
仔细想想还是好生气啊!烦躁烦躁……
偶数/2,奇数直接LCM。
#include<iostream>
#include<cstring>
using namespace std;
int gcd(int a,int b){
if(b==0) return a;
return gcd(b,a%b);
}
int lcm(int a,int b){
return a/gcd(a,b)*b;
}
const int INF=1e9+1;
int n;
bool vis[105];
int arr[101000];
int map[1010][1010];
void dfs(int rt,int x,int len){
map[rt][arr[x]]=len;
if(vis[arr[x]]) return ;
vis[x]=true;
dfs(rt,arr[x],len+1);
}
int main(){
for(int i=0;i<1010;i++){
for(int j=0;j<1010;j++){
map[i][j]=INF;
}
}
cin>>n;
for(int i=1;i<=n;i++){
cin>>arr[i];
}
for(int i=1;i<=n;i++){
memset(vis,0,sizeof(vis));
dfs(i,i,1);
}
int ans=1;
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
if(map[i][j]==INF&&map[j][i]!=INF){
cout<<-1<<endl;
return 0;
}
if(map[i][j]!=INF&&map[j][i]==INF){
cout<<-1<<endl;
return 0;
}
if(map[i][j]==INF&&map[j][i]==INF) continue;
int length=map[i][j]+map[j][i];
if(length&1) ans=lcm(ans,length);
else ans=lcm(ans,length/2);
}
}
cout<<ans<<endl;
}
上一篇: vue数据绑定指令
下一篇: 【Python】日期处理-中国法定节假日
推荐阅读
-
【HZNU Summer training】CF-129B Students and Shoelaces (拓扑排序)
-
CF #269 DIV2 A,B,C,D_html/css_WEB-ITnose
-
win10中CF怎么调烟雾头 CF调烟雾头和全屏游戏的两种设置方法
-
qq浏览器审查元素方法分享 qq浏览器审核元素修改代码秒领CF礼包
-
win10中CF怎么调烟雾头 CF调烟雾头和全屏游戏的两种设置方法
-
qq浏览器审查元素方法分享 qq浏览器审核元素修改代码秒领CF礼包
-
CF1207G Indie Album
-
cf1060E. Sergey and Subway(思维 枚举)
-
CF1204D Kirk and a Binary String
-
CF月光宝盒使用教程(图解)