code vs 1106 篝火晚会(置换)
来源:互联网 发布:选股器软件哪个好 编辑:程序博客网 时间:2024/04/28 04:20
1106 篝火晚会
2005年NOIP全国联赛提高组
时间限制: 1 s
空间限制: 128000 KB
题目等级 : 大师 Master
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#define N 500003using namespace std;int n,m,ans[N];int a[N],point[N],v[N],next[N],tot,vis[N],b[N];int t[N],t1[N],cnt[N];bool flag;void add(int x,int y){tot++; next[tot]=point[x]; point[x]=tot; v[tot]=y;}void dfs(int x,int num){vis[x]=1; ans[num]=x;if (num==n){flag=true;return;}for (int i=point[x];i;i=next[i])if (!vis[v[i]]){dfs(v[i],num+1);if (flag) return;}}int main(){scanf("%d",&n);for (int i=1;i<=n;i++) {int x,y; scanf("%d%d",&x,&y);add(i,x); add(i,y);}flag=false;dfs(1,1);if (!flag) {printf("-1\n");return 0;}for (int i=1;i<=n;i++) a[i]=i,b[i]=n-i+1;int maxn=0;for (int i=1;i<=n;i++) { t[i]=ans[i]-a[i]; if (t[i]<0) t[i]+=n; cnt[t[i]]++; } for (int i=0;i<=n;i++) maxn=max(maxn,cnt[i]); memset(cnt,0,sizeof(cnt)); for (int i=1;i<=n;i++){ t1[i]=ans[i]-b[i]; if (t1[i]<0) t1[i]+=n; cnt[t1[i]]++; } for (int i=0;i<=n;i++) maxn=max(maxn,cnt[i]); printf("%d\n",n-maxn);}
0 0
- code vs 1106 篝火晚会(置换)
- wikioi1106 篝火晚会 置换模拟
- 【codevs 1106】篝火晚会 (2005年NOIP全国联赛提高组)(置换群)
- Vijos P1008 篝火晚会(组合数学,置换群)
- Codevs 1106 篝火晚会
- 篝火晚会(脑洞题)
- NOIP 2005 篝火晚会 COGS 112(只是用到置换的一个小概念而已)
- noip2005 篝火晚会 (模拟)
- 【NOIP2005提高组T3】篝火晚会-置换群
- 篝火晚会 题解
- VIJOS 1008 篝火晚会
- 【模拟】篝火晚会(noip2005)
- Vijos1008 篝火晚会
- NOIP2005 篝火晚会
- NOIP2005篝火晚会
- RQNOJ 篝火晚会
- NOIP2005 篝火晚会
- RQNOJ-19 篝火晚会
- php pgsql的常用函数
- Windows Server 2012 R2 Datacenter虚拟机自动激活
- Java EE中Srevlet的使用
- 解决ubuntu和windows双系统时间差异8小时的方法
- 输入框边缘高亮
- code vs 1106 篝火晚会(置换)
- adaptive color attributes for tracking翻译
- CentOS 6.4 服务器版安装教程(超级详细图解)
- 【POJ 2369】Permutations(置换群)
- XML解析之SAX解析技术案例
- 1007 Problem G
- 求最短路径———Dijkstra算法和Floyd算法
- 欢迎使用CSDN-markdown编辑器
- 动态规划法实现fibonacci数列求解