[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. spoj DYNALCA - Dynamic LCA

    http://www.spoj.com/problems/DYNALCA/ 此题link.cut要求不能换根,当然也保证link时其中一个点必定已经是根. 方法: void link(Node *x, ...

  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. Windows查杀端口

    Windows环境下当某个端口被占用时,通过netstat命令进行查询pid,然后通过taskkill命令杀进程. 一.查询占用端口号的进程信息 netstat -an|findstr 二.杀掉占用端 ...

  4. AJPFX解析关于编码ansi、GB2312、unicode与utf-8的区别

    大家平时遇到乱码问题是否有自己的一套解决方案?这篇文章就是介绍一下常用的编码方式关于编码ansi.GB2312.unicode与utf-8的区别 先做一个小小的试验: 在一个文件夹里,把一个txt文本 ...

  5. AJPFX关于Java Object类常用方法小总结

    java.lang.Object   java.lang包在使用的时候无需显示导入,编译时由编译器自动导入. Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类. Object类 ...

  6. linux小白成长之路11————​linux命令大全

    1. 启动,关机,登入,登出相关命令 登录:login 登出:logout 登出:exit 停止系统:shutdown 停止系统:halt 重启动:reboot 切断电源:poweroff 把内存里的 ...

  7. 【PostgreSQL-9.6.3】Red Hat 4.4.7下的安装

    1. 下载源码包https://www.postgresql.org/ftp/source/v9.6.1/ 2. 上传到/opt目录下 3. 创建postgres用户及dba组,并修改压缩包的属主属组 ...

  8. webpack3整理(第二节/满三节)

    消除未使用的CSS:安装PurifyCSS-webpack插件 cnpm i purifycss-webpack purify-css -D const glob = require('glob'); ...

  9. 拼图游戏源码-swift版项目源码

    作者fanyinan,源码PuzzleProject,公司的项目中需要一个拼图游戏,之前有手动拼图和随机打乱的功能,近期又由于个(xian)人(zhe)爱(dan)好(teng)自己加入了自动拼图功能 ...

  10. Cygwin, MinGW/MSYS, MinGW-W64/MSYS2

    1. Cygwin http://www.cygwin.com/ Cygwin is a large collection of GNU and Open Source tools which pro ...