博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
dtoj#4299. 图(graph)
阅读量:6496 次
发布时间:2019-06-24

本文共 1801 字,大约阅读时间需要 6 分钟。

题目描述:

对于一个无向图 $G$,三元组 $(a, b, c)$ 被称为优秀的当且仅当满足如下条件:

$1. a < b < c$;

$2. a $ 与 $b$ 有边相连;

$3. a $ 与 $c$ 有边相连;

$4. b$ 与 $c$ 没有边相连。

现在有一个 $n$ 个点的连通无向图 $G$,每次找一个优秀的三元组 $(a, b, c)$ 将 $b$ 和 $c$ 连边,如果没有则结束加边过程。

问最终得到的图有多少种用 $n$ 种颜色对点染色的方案,对 $998244353$ 取模后输出。

一种染色方案合法当且仅当每个点颜色是 $1$ 到 $n$ 中的一个,并且一条边两端的点颜色不同。

算法标签:线段树合并

思路:

对于一个无向图 $G$,三元组 $(a, b, c)$ 被称为优秀的当且仅当满足如下条件:

$1. a < b < c$;

$2. a $ 与 $b$ 有边相连;

$3. a $ 与 $c$ 有边相连;

$4. b$ 与 $c$ 没有边相连。

现在有一个 $n$ 个点的连通无向图 $G$,每次找一个优秀的三元组 $(a, b, c)$ 将 $b$ 和 $c$ 连边,如果没有则结束加边过程。

问最终得到的图有多少种用 $n$ 种颜色对点染色的方案,对 $998244353$ 取模后输出。

一种染色方案合法当且仅当每个点颜色是 $1$ 到 $n$ 中的一个,并且一条边两端的点颜色不同。

以下代码:

#include
#define il inline#define _(d) while(d(isdigit(ch=getchar())))using namespace std;const int N=1e6+5,p=998244353;int n,m,rt[N],fa[N],cnt,tot,head[N],ne[N<<1],to[N<<1],ans=1;struct node{ int x,l,r,num;}t[N*21];il int read(){ int x,f=1;char ch; _(!)ch=='-'?f=-1:f;x=ch^48; _()x=(x<<1)+(x<<3)+(ch^48); return f*x;}il void ins(int x,int y){ ne[++tot]=head[x]; head[x]=tot;to[tot]=y;}il int getfa(int x){ return fa[x]?(fa[x]=getfa(fa[x])):x;}il void update(int x){ t[x].num=t[t[x].l].num+t[t[x].r].num;}il void insert(int &x,int l,int r,int pos){ if(!x)x=++cnt; if(l==r){t[x].num=1;return;} int mid=(l+r)>>1; if(pos<=mid)insert(t[x].l,l,mid,pos); else insert(t[x].r,mid+1,r,pos); update(x);}il void merge(int &x,int y,int l,int r){ if(!x||!y){x=x+y;return;} if(l==r){t[x].num=1;return;} int mid=(l+r)>>1; merge(t[x].l,t[y].l,l,mid); merge(t[x].r,t[y].r,mid+1,r); update(x);}il int query(int x,int l,int r,int ql,int qr){ if(ql<=l&&r<=qr)return t[x].num; int mid=(l+r)>>1;int res=0; if(ql<=mid)res=query(t[x].l,l,mid,ql,qr); if(mid
View Code

 

转载于:https://www.cnblogs.com/Jessie-/p/10610421.html

你可能感兴趣的文章
1+1*2+1*2*3+1*2*3*n数列的求和算法
查看>>
异常模拟测试 -- 场景抽象及解决方案
查看>>
Gradle之旅-can not find tools.jar问题解决
查看>>
JavaScript_navigator
查看>>
apache配置文件详解
查看>>
linux下echo的使用总结
查看>>
EDM营销学堂:高效提升营销邮件点击率的技巧
查看>>
ORACLE 11G静默安装配置分解
查看>>
为什么大家不相信国产虚拟化技术?
查看>>
华为首提“业务驱动基础架构”(SDI)
查看>>
Word2010使用技巧之一:熟悉功能区
查看>>
Citrix XenDektop 7 实施十 创建License Server
查看>>
RookeyFrame 通用页面 加载数据 原理
查看>>
hbuilder APP服务器端(C#)推送
查看>>
统计c盘的PE文件的个数 (遍历所有文件)
查看>>
大白话Vue源码系列目录
查看>>
EffectKeyMap系列1(Ubuntu)
查看>>
iOS手势
查看>>
Webpack源码基础-Tapable从使用Hook到源码解析
查看>>
【转载】NBU异机恢复oracle
查看>>