[BZOJ1064][Noi2008]假面舞会
来源:互联网 发布:淘宝二手市场怎么进入 编辑:程序博客网 时间:2024/04/28 14:44
原题地址
OLZ BYVOID神犇题解:
https://www.byvoid.com/blog/noi-2008-party/
顶点标号的技巧很巧妙OLZ
AC code:
#include <cstdio>const int N=100010;const int M=1000010;int n,m,cnt=1,tot,cb,top;int head[N],num[N],a[N],bl[N],stk[N],minn[N],maxn[N];bool ins[N];struct Edge{ int u,v,w,next; Edge() {} Edge(int u,int v,int w,int next):u(u),v(v),w(w),next(next) {}}E[M];int Abs(int x){ return x<0?-x:x;}int gcd(int x,int y){ return y?gcd(y,x%y):x;}int Max(int x,int y){ return x>y?x:y;}int Min(int x,int y){ return x<y?x:y;}void addedge(int u,int v){ E[++cnt]=Edge(u,v,1,head[u]); E[++cnt]=Edge(v,u,-1,head[v]); head[u]=cnt-1;head[v]=cnt;}void read(){ scanf("%d%d",&n,&m); for(int i=1;i<=m;i++){ int u,v; scanf("%d%d",&u,&v); addedge(u,v); }}void DFS(int x,int cnum){ num[x]=cnum;bl[x]=cb;ins[x]=1;stk[++top]=x; for(int i=head[x];i;i=E[i].next){ if(bl[E[i].v]){ if(ins[E[i].v]&&stk[top-1]!=E[i].v&&cnum+E[i].w-num[E[i].v]) a[++tot]=Abs(cnum+E[i].w-num[E[i].v]); continue ; } DFS(E[i].v,cnum+E[i].w); ins[E[i].v]=0;top--; }}int main(){ read(); for(int i=1;i<=n;i++){ if(!bl[i]){ cb++; DFS(i,1); } } if(tot){ int ans=a[1]; for(int i=2;i<=tot;i++) ans=gcd(ans,a[i]); if(ans<3) printf("-1 -1\n"); else{ for(int i=3;i<=ans;i++){ if(!(ans%i)){ printf("%d %d\n",ans,i); break; } } } } else{ int ans=0; for(int i=1;i<=n;i++) minn[i]=1<<28; for(int i=1;i<=n;i++){ minn[bl[i]]=Min(minn[bl[i]],num[i]); maxn[bl[i]]=Max(maxn[bl[i]],num[i]); } for(int i=1;i<=n;i++) if(maxn[i]) ans+=maxn[i]-minn[i]+1; if(ans<3) printf("-1 -1\n"); else printf("%d 3\n",ans); } return 0;}
0 0
- [BZOJ1064][Noi2008]假面舞会
- 【BZOJ1064】【NOI2008】假面舞会
- [bzoj1064][NOI2008]假面舞会
- BZOJ1064: [Noi2008]假面舞会
- 【bzoj1064】 NOI2008 假面舞会 图论好题
- 【bzoj1064】【NOI2008】【假面舞会】【dfs】
- [图论杂题] BZOJ1064: [Noi2008]假面舞会
- 【BZOJ1064】[Noi2008]假面舞会【DFS】【分类讨论】
- [BZOJ1064][Noi2008]假面舞会(图论)
- NOI2008 假面舞会party
- [Noi2008]假面舞会
- 1064: [Noi2008]假面舞会
- bzoj 1064: [Noi2008]假面舞会
- 【BZOJ 1064】 [Noi2008]假面舞会
- [BZOZ1064][NOI2008]假面舞会 图论
- 2017.7.10 noi2008 假面舞会
- BZOJ1064:假面舞会(DFS & 思维)
- 【图的遍历】【NOI2008】假面舞会
- android 使用imageloader 获取图片时,如果需要带cookie
- Dango笔记---manage.py 脚本的使用
- json时间转化问题
- 日期相差获取毫秒
- C#高级编程四十三天----Lambda表达式
- [BZOJ1064][Noi2008]假面舞会
- 深入浅出 Java Concurrency (19): 并发容器 part 4 并发队列与Queue简介
- [LeetCode][Java] Validate Binary Search Tree
- 郁金香驱动学习>第三课:添加设备对象
- Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Query was empty
- poj 2774 Long Long Message 后缀数组
- 设计模式之一----依赖注入
- android 打开pdf文件 从inputStream读取数据并保存为文件
- 使用了框架iframe的页面如何跳出框架