码迷,mamicode.com
首页 > 其他好文 > 详细

CF981C(菊花图的性质)

时间:2018-07-28 11:38:54      阅读:301      评论:0      收藏:0      [点我收藏+]

标签:color   div   const   思路   简单的   none   才有   顶点   问题   

题目描述

RAMESS知道很多关于树的问题(无循环的无向连通图)! 他创建了一个新的有用的树的划分,但他不知道如何构造它,所以他请求你的帮助! 划分是从树上的边中分裂出一些简单的路径,使得每个两条路径都具有至少一个公共顶点。树的每一个边都应该在一条路径上。 帮助RAMESs,找到这样的树的划分,或判断没有这样的划分。

题解

很明显只有菊花图才有这样的性质,所以只要判断这个图是不是菊花图就行,大体思路是找到度数大于2的点的个数加特判。

技术分享图片
 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #include<algorithm>
 5 #include<cmath>
 6 using namespace std;
 7 const int N=100010;
 8 int n,deg[N],ans,tmp;
 9 int main(){
10     scanf("%d",&n);
11     for(int i=1,u,v;i<=n-1;i++){
12         scanf("%d%d",&u,&v);
13         deg[u]++;
14         deg[v]++;
15         if(deg[u]==3)ans++,tmp=u;
16         if(deg[v]==3)ans++,tmp=v;
17     }
18     if(ans==0){
19         printf("Yes\n1\n");
20         for(int i=1;i<=n;i++){
21             if(deg[i]==1)printf("%d ",i);
22         }
23         return 0;
24     }
25     else if(ans==1){
26         printf("Yes\n");
27         for(int i=1;i<=n;i++){
28             if(deg[i]==1)ans++;
29         }
30         printf("%d\n",ans-1);
31         for(int i=1;i<=n;i++){
32             if(deg[i]==1)printf("%d %d\n",tmp,i);
33         }
34         return 0;
35     }
36     else {
37         printf("No\n");
38         return 0;
39     }
40     return 0;
41 } 
View Code

 

CF981C(菊花图的性质)

标签:color   div   const   思路   简单的   none   才有   顶点   问题   

原文地址:https://www.cnblogs.com/Xu-daxia/p/9380681.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!