博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
dtoj#4299. 图(graph)
阅读量:6498 次
发布时间: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

你可能感兴趣的文章
记一次数据库崩溃的恢复
查看>>
16G 手机清理
查看>>
看书挑剔,只看经典
查看>>
COMP 0137 Machine Vision
查看>>
urlrewrite使用小结
查看>>
游戏AI之初步介绍(0)
查看>>
Python3基础笔记---面向对象
查看>>
单目和双目模式识别---游戏控制
查看>>
嵌入式开发之信号采集同步---VSYNC和HSYNC的作用以及它们两者之间的关系
查看>>
ti的硬件时钟和系统时钟同步
查看>>
设置应用图标badge(徽章)
查看>>
ORACLE SQL: 经典查询练手第二篇
查看>>
运动目标检测ViBe算法
查看>>
MySQL基本概念
查看>>
推荐两款简单好用的图片放大jquery插件
查看>>
Java实现MD5(32/16位大小写)加密
查看>>
[emuch.net]MatrixComputations(1-6)
查看>>
zencart安全辅助小脚本
查看>>
alter system switch logfile与alter system archive log current的区别
查看>>
第十周项目5:贪心的富翁
查看>>