codeforces 741A
来源:互联网 发布:视频源码链接 编辑:程序博客网 时间:2024/05/21 14:07
题目大意:
很多个人,一次给对应的人打电话。第t个人就是第一个人的Joon-Joon。问t最小为多少可以让每两个人
互为Joon-Joon。
做法:
对于每一个人我们求一次环的长度,然后如果是偶数除以2,然后把n个环长取一个最小公倍数就好了。其中特判一下不能构成环的情况即可。答案是会爆longlong的,第一遍我又没开,总是挂在这种傻傻的地方。
代码如下:
#include<iostream>#include<cstring>#include<string>#include<algorithm>#include<cstdio>#include<cmath>using namespace std;int vis[100005];int a[100005];long long gcd(long long a,long long b){return b==0?a:gcd(b,a%b);}int find(int x,int goal,int sum){if (x==goal) return sum;if (vis[x]>2) return 0;vis[x]++;find(a[x],goal,sum+1);}int main(){int n; long long ans;scanf("%d",&n);for (int i=1;i<=n;i++) scanf("%d",&a[i]);for (int i=1;i<=n;i++){memset(vis,0,sizeof(vis));int t=find(a[i],i,1);if (t==0){printf("%d",-1);return 0;}if (t%2==0) t=t/2;if (i==1) ans=t;else ans=ans*t/gcd(ans,t);}printf("%lld",ans);return 0;}
阅读全文
0 0
- Codeforces 741A
- codeforces 741A
- CodeForces-a
- Codeforces 903A A
- CodeForces 18A A - Triangle
- CodeForces 133A A. HQ9+
- codeforces 651A A. Joysticks
- 【Codeforces 597A】A. Divisibility
- 【 Codeforces 615A】A. Bulbs
- A. Divisibility CodeForces 597A
- codeforces 417A A. Elimination
- CodeForces 534A A. Exam
- codeforces#98 a
- codeforces#99 a
- codeforces 105 div2 A
- codeforces #121 A
- Codeforces 185A Plant
- codeforces 183A Headquarters
- ElasticSearch简介、常用命令及插件介绍
- 终极单例模式,饿汉式,懒汉式,枚举式
- Kafka测试及性能调优详细总结
- 欢迎使用CSDN-markdown编辑器
- 笔记--python列表及元组以及关于列表操作的函数使用
- codeforces 741A
- Eclipse An SWT error has occurred.You are recommended to exit 解决办法
- 什么是面向对象的继承?
- Java 将字节数组转化为16进制的多种方案
- win10安装openssl
- 二分图及二分图最小顶点覆盖 最大独立集
- 过山车
- 计算机编码方式杂谈
- 最小生成树(并查集)