首页 > 其他分享 >题解【CF209C Trails and Glades】

题解【CF209C Trails and Glades】

时间:2022-09-26 14:15:19浏览次数:88  
标签:cnt int 题解 ans 连通 ++ num Glades Trails

CF209C Trails and Glades
解题报告

图论基础题。

考虑一张无向联通图存在欧拉回路的条件是什么:

每一个点的度数均为偶数。

但这个条件的前提是连通图,那么我们可以考虑每一个连通块。

若这个连通块所有点度数均为偶数,那么我们可以从这个连通块往外连两条边,与其它连通块合并,贡献为 \(1\)。

若有 \(k\) 个点的度数是奇数,那么我们只保留两个这样奇数点来往外连边即可,其余点相互连,贡献是 \(\frac{k}{2}+1\)。

注意贡献为 \(1\) 的意思是,原本是要连两条边的,但由于两个连通块的相互连的话,每一条边会被算两次,所以连两条边只算一条边的贡献。

注意坑点:

若一个连通块只有一个点这个连通块是不用考虑的,但如果有自环是需要考虑的。

代码:

const int MAXN(1e6+10);

int n,m;
struct E{int to,nxt;};
E edge[MAXN<<1];

int head[MAXN],tot;

inline void add_edge(int u,int v)
{
	edge[++tot].nxt=head[u];
	head[u]=tot;
	edge[tot].to=v;
	return;
}

int cnt,deg[MAXN];
bool vis[MAXN];
vector<int>G[MAXN];

inline void dfs(int u)
{
	vis[u]=true;
	G[cnt].push_back(u);
	gra(i,u)
	{
		int v=edge[i].to;
		if(!vis[v]) dfs(v);
	}
	return;
}

int ans;

inline int Count(int i)
{
	int num=0;
	rep(j,0,(int)G[i].size()-1) if(deg[G[i][j]]&1) ++num;
	return num;
}

int main()
{
    n=read(),m=read();
    while(m--)
    {
    	int u=read(),v=read();
    	add_edge(u,v),add_edge(v,u);
    	++deg[u],++deg[v];
    }
    rep(i,1,n) if(!vis[i])
    {
    	++cnt;
    	dfs(i);
    	if(G[cnt].size()==1&&G[cnt][0]!=1&&deg[i]==0) G[cnt--].pop_back();
    }
    if(cnt==1)
    {
    	printf("%d\n",Count(1)>>1);
    	return 0;
    }
    rep(i,1,cnt)
    {
    	int num=Count(i);
    	if(!num) ++ans;
    	else ans=ans+(num>>1);
    }
    printf("%d\n",ans);
    return 0;
}

标签:cnt,int,题解,ans,连通,++,num,Glades,Trails
From: https://www.cnblogs.com/UperFicial/p/16730678.html

相关文章

  • CSP2022 S2 练习二 题解
    ArbitrageA货币可以以\(x\)的汇率兑换B货币,就从A向B连一条权值为\(x\)的边,改一下\(Floyd\)即可。点击查看代码#include<iostream>#include<string>#i......
  • 牛客题解 水图
    链接:https://ac.nowcoder.com/acm/problem/18947来源:牛客网题解作者岛田小雅由题目中“\(n\)个点\(n-1\)条边的无向连通图”可得出这是一棵树。考虑使用树形DP。......
  • Xshell无法连接22端口问题解决办法汇总
    Xshell软件在进行远程连接过程中,会出现端口连接报错的问题,提示:“该IP地址的22端口连接失败”,这是怎么回事?今天小编就xshell软件无法连接22端口的问题,整理相关情形(ubuntu系......
  • iOS 开发者帐号 App转让/转移 及转移后的证书问题解答(多图慎入)
    原文:简书 帐号转移在此,将原帐号称为A帐号,新的帐号称为B帐号。现在需要将A帐号中的App转让到B帐号中。*登录A帐号,找到App如下图: 1.A账号APP点转让.jp......
  • [hystrix] hystrix-dashboard 关于 Unable to connect to Command Metric Stream 的问
    问题在hystrix-dashboard界面中出现以下错误解决方法高版本(具体哪些版本之后我不知道,加上去试试)springcloud需要加以下配置(在被监控一端):@Configurationpubli......
  • 性能测试监控nmon安装和问题解决
      一.安装nmon1.确认linux的版本,选择合适的安装包uname-a查看操作系统信息lsb_release-a或者cat/etc/redhat-release查看linux发行版本2.下载安装nmon下载:由......
  • MySQL数据库安装保姆级教程及1045错误和2058问题解决
    使用Mysql的zip压缩包解压版,下载之后需进行一定的配置,才能使用它。下面对Mysql压缩包版的安装方法进行详细的描述,如有疑问或错误,望及时反馈。首先,mysql的官方下载地址......
  • 尚品汇前台管理项目:未登录情况下访问购物车,登录账号后页面不更新问题解决方案
    问题描述:如果用户未登录状态下通过首页访问【我的购物车】,点击【结算】,跳转登录页面后,即使输入正确的账号和密码获取到用户信息后,地址栏路径和页面也不会更新,从【我的订......
  • 学习过程中的相关问题解决
    解决方法:这怎么说呢?误打误撞了属于是,在某个文件中定义为然后,在另一个.java文件中就不要出现已经用到过的名字,不然就会报错,注意一下哈!解决方法:大概率是form表单中的a......
  • 「题解」异或
    披着位运算皮的莫队(114514)原题出处:没找到原题链接:题库暂未公开「我的做题历程」:step1:观察题面题面如下图。图1 题面 看到这个「区间询问」,我的脑子里闪过......