博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Johnny Solving CodeForces - 1103C (构造,图论)
阅读量:4587 次
发布时间:2019-06-09

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

大意: 无向图, 无重边自环, 每个点度数>=3, 要求完成下面任意一个任务

  • 找一条结点数不少于n/k的简单路径
  • 找k个简单环, 每个环结点数小于n/k, 且不为3的倍数, 且每个环有一个特殊点$x$, $x$只属于这一个环

 

 

任选一棵生成树, 若高度>=n/k, 直接完成任务1, 否则对于叶子数一定不少于k, 而叶子反向边数>=2, 一定可以构造出一个环

 

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#define REP(i,a,n) for(int i=a;i<=n;++i)#define PER(i,a,n) for(int i=n;i>=a;--i)#define hr putchar(10)#define pb push_back#define lc (o<<1)#define rc (lc|1)#define mid ((l+r)>>1)#define ls lc,l,mid#define rs rc,mid+1,r#define x first#define y second#define io std::ios::sync_with_stdio(false)#define endl '\n'using namespace std;typedef long long ll;typedef pair
pii;const int P = 1e9+7, INF = 0x3f3f3f3f;ll gcd(ll a,ll b) {return b?gcd(b,a%b):a;}ll qpow(ll a,ll n) {ll r=1%P;for (a%=P;n;a=a*a%P,n>>=1)if(n&1)r=r*a%P;return r;}ll inv(ll x){return x<=1?1:inv(P%x)*(P-P/x)%P;}//headconst int N = 1e6+10;int n, m, k;vector
g[N];int q[N];int dep[N], vis[N], fa[N];void dfs(int x, int f, int d) { vis[x]=1,fa[x]=f,dep[x]=d; if (d>=(n+k-1)/k) { puts("PATH"); printf("%d\n", d); while (x) printf("%d ",x),x=fa[x]; puts(""),exit(0); } int ok = 0; for (int y:g[x]) if (!vis[y]) { ok = 1, dfs(y,x,d+1); } if (!ok) q[++*q]=x;}int main() { scanf("%d%d%d", &n, &m, &k); REP(i,1,m) { int u, v; scanf("%d%d", &u, &v); g[u].pb(v),g[v].pb(u); } dfs(1,0,1); puts("CYCLES"); REP(i,1,k) { int x=0, y=0, z=q[i]; for (int t:g[z]) if (t!=fa[z]) { if (!x) x=t; else y=t; } if ((dep[z]-dep[x]+1)%3) { printf("%d\n",dep[z]-dep[x]+1); for (; printf("%d ",z), z!=x; z=fa[z]) ; } else if ((dep[z]-dep[y]+1)%3) { printf("%d\n",dep[z]-dep[y]+1); for (; printf("%d ",z), z!=y; z=fa[z]) ; } else { if (dep[x]

 

转载于:https://www.cnblogs.com/uid001/p/10500245.html

你可能感兴趣的文章
24小时学通Linux内核之向内核添加代码
查看>>
python 函数
查看>>
Solr4.0 如何配置使用UUID自动生成id值
查看>>
Marketing™Series用户手册(Marketing™Series Manual)
查看>>
Java动态代理
查看>>
二维码开源库zbar、zxing使用心得
查看>>
框架设计读书笔记--扩展点设计--组合法
查看>>
Web开发小贴士 -- 全面了解Cookie
查看>>
收藏Javascript中常用的55个经典技巧
查看>>
Arm-linux-gcc-4.3.2安装步骤
查看>>
Java多线程与并发编程学习
查看>>
Support Vector Machine
查看>>
牛客-2018多校算法第五场C-KMP
查看>>
Linux查看文件内容
查看>>
[转]社会生活中十二大著名法则 1 马太效应 2 手表定理 3 不值得定律 4 彼得原理 5 零和游戏原理 6 华盛顿合作规律 7 酒与污水定律 8 水桶定律 9 蘑菇管理 10 奥...
查看>>
浅谈三层与实体
查看>>
cocostudio——js 3 final控件事件
查看>>
Flex 学习笔记 datatip的背景颜色
查看>>
iOS开发中六种手势识别
查看>>
oracle创建临时表没有权限
查看>>