/*
分三种情况
1 有环:找环长的gcd作为max gcd的超过2的最小因子作为min
2 树:所有最长链的和作为max 3为min (最长链≥3)
3 两条相交链:找出所有的这样的两条链的差 同1求
显然第三种不好处理 看了别人的做法是+反向-1的边 1 3就能合并了.
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#define maxn 1000010
#define pa pair<int,int>
using namespace std;
int n,m,num,head[maxn],dfn[maxn],topt;
int c[maxn],sum,Gcd,ans,maxx,minn,x,y,d[maxn];
bool f[maxn];
struct node
{
int v,pre,t;
}e[maxn],ei[maxn];
int gcd(int a,int b)
{
return !b?a:gcd(b,a%b);
}
int abs(int a)
{
return a<?-a:a;
}
void Add(int from,int to,int dis)
{
num++;e[num].v=to;
e[num].t=dis;
e[num].pre=head[from];
head[from]=num;
}
void Tarjan(int x)
{
dfn[x]=++topt;f[x]=;
for(int i=head[x];i;i=e[i].pre)
{
int v=e[i].v;
if(f[v]==)d[v]=d[x]+e[i].t,Tarjan(v);
else c[++sum]=abs(d[x]-d[v]+e[i].t);
}
}
int Get_gcd()
{
Gcd=c[];
for(int i=;i<=sum;i++)
Gcd=gcd(Gcd,c[i]);
return Gcd;
}
int Get_min()
{
int tmp=Gcd+;
for(int i=;i<=Gcd;i++)
if(Gcd%i==)
tmp=min(tmp,i);
if(tmp==Gcd+)tmp=-;
return tmp;
}
void Dfs(int x)
{
f[x]=;
for(int i=head[x];i;i=e[i].pre)
{
int v=e[i].v;
if(f[v])continue;
d[v]=d[x]+e[i].t;Dfs(v);
}
maxx=max(maxx,d[x]);
minn=min(minn,d[x]);
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
scanf("%d%d",&x,&y),Add(x,y,),Add(y,x,-);
for(int i=;i<=n;i++)
if(dfn[i]==)Tarjan(i);
Gcd=Get_gcd();ans=Get_min();
if(Gcd)
{
if(Gcd<)Gcd=ans=-;
printf("%d %d\n",Gcd,ans);
return ;
}
ans=;memset(f,,sizeof(f));
for(int i=;i<=n;i++)
if(f[i]==)
{
maxx=;minn=maxn;Dfs(i);
ans+=maxx-minn+;
}
if(ans>)printf("%d 3\n",ans);
else printf("-1 -1\n");
return ;
}

2008年NOI全国竞赛 假面舞会的更多相关文章

  1. Codevs 1800 假面舞会 2008年NOI全国竞赛

    1800 假面舞会 2008年NOI全国竞赛 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 一年一度的假面舞会又开始了,栋栋也 ...

  2. Codevs 1074 食物链 2001年NOI全国竞赛

    1074 食物链 2001年NOI全国竞赛 时间限制: 3 s 空间限制: 64000 KB 题目等级 : 钻石 Diamond 传送门 题目描述 Description 动物王国中有三类动物 A,B ...

  3. 1729 单词查找树 2000年NOI全国竞赛

    1729 单词查找树 2000年NOI全国竞赛 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 大师 Master         题目描述 Description 在进行文法分析的 ...

  4. 1074 食物链 2001年NOI全国竞赛

    1074 食物链 2001年NOI全国竞赛 时间限制: 3 s 空间限制: 64000 KB 题目等级 : 钻石 Diamond         题目描述 Description 动物王国中有三类动物 ...

  5. CODEVS 1074 食物链 2001年NOI全国竞赛(洛谷 P2024)

    题目描述 Description 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A吃B,B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并 ...

  6. 食物链 2001年NOI全国竞赛

    时间限制: 3 s 空间限制: 64000 KB 题目等级 : 钻石 Diamond   题目描述 Description 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A吃B ...

  7. 1722 最优乘车 1997年NOI全国竞赛

    题目描述 Description H城是一个旅游胜地,每年都有成千上万的人前来观光.为方便游客,巴士公司在各个旅游景点及宾馆,饭店等地都设置了巴士站并开通了一些单程巴上线路.每条单程巴士线路从某个巴士 ...

  8. 银河英雄传说 2002年NOI全国竞赛

    时间限制: 1 s 空间限制: 256000 KB 题目等级 : 大师 Master 题目描述 Description 公元五八○一年,地球居民迁移至金牛座α第二行星,在那里发表银河联邦创立宣言,同年 ...

  9. NOI全国赛(2001)--食物链

    今天写了道并查集的题,看来并查集的题刷少了,,,,,用法好神奇啊!!!开三倍并查集 用i表示自己,i+n存天敌,i+2*n存可以克制de,再逻辑判断一下即可. 所以,要意识到并查集的分类处理可以开不同 ...

随机推荐

  1. delphi服务程序(service)的调试方法

    方法一: 1.调试delphi 写的服务程序,有这么一个办法.原来每次都是用attach to process方法,很麻烦.并且按照服务线程的执行线路,可能会停不到想要的断点.笨办法是,在proced ...

  2. 当OOP语言RAII特性发展到functional形式的极致

    本文主要站在C++程序员的思维角度思量. functional之路 lambda表达式 lambda表达式,是一段代码片段.函数实现体中出现的可重用的代码块. 在C++之前,C语言最小可复用流程模块, ...

  3. Cloneable接口分析

    Cloneable接口是一个标记接口,也就是没有任何内容,定义如下: package java.lang; pubilc interface Cloneable { } 这里分析一下这个接口的用法 c ...

  4. ucenter 通信原理

    1.用户登录discuz,通过logging.php文件中的函数uc_user_login对post过来的数据进行验证,也就是对username和password进行验证. 2.如果验证成功,将调用位 ...

  5. CAFFE安装 CentOS无GPU

    前记 由于是在一台用了很久的机器上安装caffe,过程比较复杂,网上说再干净的机器上装比较简单.如果能有干净的机器,就不用再过这么多坑了,希望大家好运!介绍这里就不说了,直接进入正题: Caffe 主 ...

  6. .NET MVC插件化开发框架源码(插件功能完善版)

    离上次第一次上传源码一个多星期了,在工作之余今天终于把插件管理部门的功能全部完善了,已可用于实际开发,管理界面因为没人帮忙设计,所以有点丑,今天这版算是0.1.0.0吧,后面我会发布很多插件来填充这个 ...

  7. 30 个 Python 语言的特点技巧

    1   介绍 从我开始学习Python时我就决定维护一个经常使用的“窍门”列表.不论何时当我看到一段让我觉得“酷,这样也行!”的代码时(在一个例子中.在StackOverflow.在开源码软件中,等等 ...

  8. js 冒泡事件的处理

    onMouseOver 和 onMouseOut事件冒泡 当事件在某一DOM元素被触发时,例如用户在某个节点上点击鼠标,事件将跟随着该节点继承的各个父节点冒泡穿过整个DOM的节点层次,直到它遇到依附有 ...

  9. Regex sumologic

    https://www.sumologic.com/2014/08/18/no-magic-regular-expressions/

  10. COJ 0200 Fibonacci

    传送门:http://oj.cnuschool.org.cn/oj/home/problem.htm?problemID=200 试题描述: 地球人都知道Fibonicca数列: 1 1 2 3 5 ...