[Wf2015]Tours

题目

给定一张n个点m条边的无向图,你需要选择一个颜色种类数k,然后用这k种颜色给每条边染色,要求对于图中任意一个简单环,每种颜色的边的数量都相同,求所有可行的k

INPUT

第一行两个正整数n,m
接下来m行,每行两个正整数x,y(1<=x<y<=n),代表一条无向边
数据保证无重边无自环

OUTPUT

一行输出所有可行的k,按递增顺序输出 6 6 1 2 2 3 1 3 1 4 2 5 3 6

SAMPLE

INPUT

6 6
1 2
2 3
1 3
1 4
2 5
3 6

OUTPUT

1 3

解题报告

其实这道题的关键在于找到每个简单环的边数,所以我们考虑如何处理简单环

显然,在一个简单环中,删去一条边,剩下的边就会变为割边

所以就可以得出做法:枚举原图非桥边,删去该边,处理出新增的桥边数量,所有数量+1的$GCD$所有的因数即为答案

 #include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
inline int read(){
int sum();char ch(getchar());
for(;ch<''||ch>'';ch=getchar());
for(;ch>=''&&ch<='';sum=sum*+(ch^),ch=getchar());
return sum;
}
int n,m,tot,ans(-);
int dfn[],low[],cnt,tmp;
int fro[],to[];
bool bridge[],vis[];
struct edge{
int e,id;
edge *n;
}*pre[],a[];
inline void insert(int s,int e,int id){
a[++tot].e=e;
a[tot].id=id;
a[tot].n=pre[s];
pre[s]=&a[tot];
}
inline void init(){
memset(pre,NULL,sizeof(pre));
memset(dfn,,sizeof(dfn));
memset(low,,sizeof(low));
tot=cnt=tmp=;
}
inline void tarjan(int u,int fa){
dfn[u]=low[u]=++cnt;
for(edge *i=pre[u];i;i=i->n){
int e(i->e);if(e==fa)continue;
if(!dfn[e]){
tarjan(e,u);
low[u]=min(low[u],low[e]);
if(low[e]>dfn[u])bridge[i->id]=;
}
else low[u]=min(low[u],dfn[e]);
}
}
inline void dfs(int u,int fa){
dfn[u]=low[u]=++cnt;
for(edge *i=pre[u];i;i=i->n){
int e(i->e);if(e==fa)continue;
if(!dfn[e]){
dfs(e,u);
low[u]=min(low[u],low[e]);
if(low[e]>dfn[u]&&bridge[i->id]==)++tmp,vis[i->id]=;
}
else low[u]=min(low[u],dfn[e]);
}
}
inline int gcd(int x,int y){
return x%y?gcd(y,x%y):y;
}
int main(){
n=read();m=read();
for(int i=;i<=m;++i){
int x(read()),y(read());
fro[i]=x;to[i]=y;
insert(x,y,i);insert(y,x,i);
}
for(int i=;i<=n;++i)
if(!dfn[i])
tarjan(i,);
for(int i=;i<=m;++i){
if(bridge[i]||vis[i])continue;
init();
// for(int j=1;j<=m;++j)cout<<j<<' '<<bridge[j]<<endl;cout<<endl;//cout<<"ban "<<i<<endl;
for(int j=;j<=m;++j)
if(j^i){//cout<<j<<' '<<fro[j]<<' '<<to[j]<<endl;
insert(fro[j],to[j],j);
insert(to[j],fro[j],j);
}
for(int j=;j<=n;++j)
if(!dfn[j])
dfs(j,);
// for(int j=1;j<=m;++j)cout<<j<<' '<<bridge[j]<<endl;cout<<endl;
if(ans==-)ans=tmp+;
else ans=gcd(ans,tmp+);
// cout<<tmp<<' '<<ans<<endl;
}
// cout<<ans<<endl;
for(int i=;i<=ans;++i)
if(ans%i==){
printf("%d",i);
if(i^ans)putchar(' ');
}
}

[Wf2015]Tours的更多相关文章

  1. BZOJ4116 : [Wf2015]Tours

    将边集划分成若干极大不相交集合,满足每个简单环都可以由某些集合相加得到,则答案就是这些集合大小的$\gcd$的约数. 对于一个简单环,上面的边一定不是桥边,而和它在一个集合的边肯定不在其他简单环上.因 ...

  2. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  3. Web Tours自带示例网站无法打开的解决方案

    问题现象: LoadRunner自带的测试样品,旅行社机票预订系统HP Web Tours以下简称为Web Tours. 1.LoadRunner程序的Sample目录下无Web和Web Tours服 ...

  4. URAL 1077 Travelling Tours(统计无向图中环的数目)

    Travelling Tours Time limit: 1.0 secondMemory limit: 64 MB There are N cities numbered from 1 to N ( ...

  5. HP Web Tours分析

    1.启动Web Tours 2.首页结构 3.预定机票

  6. USACO 2.4 Cow Tours

    Cow Tours Farmer John has a number of pastures on his farm. Cow paths connect some pastures with cer ...

  7. BZOJ 4108: [Wf2015]Catering [上下界费用流]

    4108: [Wf2015]Catering 题意:有一家装备出租公司收到了按照时间顺序排列的n个请求. 这家公司有k个搬运工.每个搬运工可以搬着一套装备按时间顺序去满足一些请求.一个搬运工从第i个请 ...

  8. 【BZOJ4108】[Wf2015]Catering 有上下界费用流

    [BZOJ4108][Wf2015]Catering Description 有一家装备出租公司收到了按照时间顺序排列的n个请求. 这家公司有k个搬运工.每个搬运工可以搬着一套装备按时间顺序去满足一些 ...

  9. 洛谷P1522 牛的旅行 Cow Tours

    ---恢复内容开始--- P1522 牛的旅行 Cow Tours189通过502提交题目提供者该用户不存在标签 图论 USACO难度 提高+/省选-提交该题 讨论 题解 记录 最新讨论 输出格式题目 ...

随机推荐

  1. 树上最长链 Farthest Nodes in a Tree LightOJ - 1094 && [ZJOI2007]捉迷藏 && 最长链

    树上最远点对(树的直径) 做法1:树形dp 最长路一定是经过树上的某一个节点的. 因此: an1[i],an2[i]分别表示一个点向下的最长链和次长链,次长链不存在就设为0:这两者很容易求 an3[i ...

  2. 数学 Codeforces Round #282 (Div. 2) B. Modular Equations

    题目传送门 题意:a % x == b,求符合条件的x有几个 数学:等式转换为:a == nx + b,那么设k = nx = a - b,易得k的约数(>b)的都符合条件,比如a=25 b=1 ...

  3. IOS利用Core Text对文字进行排版 - 转

    原贴地址:http://hi.baidu.com/jwq359699768/blog/item/5df305c893413d0a7e3e6f7b.html core text 这个包默认是没有的,要自 ...

  4. React.js 简介

    React.js 是一个帮助你构建页面 UI 的库.如果你熟悉 MVC 概念的话,那么 React 的组件就相当于 MVC 里面的 View.如果你不熟悉也没关系,你可以简单地理解为,React.js ...

  5. MYSQL5.7 忘记ROOT密码/初始化ROOT密码

    编辑my.cnf允许空密码登录 [root@7Core ~]# vi /etc/my.cnf #在[mysqld]下加入一行 skip-grant-tables=1 重新启动Mysql服务 [root ...

  6. HTML5的音频播放和视频播放

    1.音频播放 audio(音频) html5提供了播放音频文件的标准   <audio src="anli.mp3" controls="controls" ...

  7. wget安装更新

    #查看当前wget版本信息 wget -V #下载 wget https://ftp.gnu.org/gnu/wget/wget-1.19.tar.gz #解压 tar xvf wget-1.19.t ...

  8. 有意思的String字符工具类

    对String的操作是Java攻城师必备的,一个优秀的攻城师是懒惰,他会把自己的一些常见的代码写成可提供拓展和复用的工具类或者工具库,这些是这些优秀工程师的法宝. 我就先从String这个基本操作开始 ...

  9. 合并百度影音的离线数据 with python 2.1 bdv格式的更新

    最近百度影音的离线下载文件,格式有新变化. 经过分析,是bdv格式又有新格式,从最初的bdv0001,到bdv.config 的file....,这次更新的格式是直接包含一个片段,其中还有使用guid ...

  10. Html 内联元素、外联元素 和 可变元素

    块元素(block element)一般是其他元素的容器元素 块元素一般都从新行开始,它可以容纳内联元素和其他块元素,常见块元素是段落标签'P".“form"这个块元素比较特殊,它 ...