先上题目:

Graphs

Time Limit: 4000/2000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others)
SubmitStatus

Problem Description

给出N个点,M条边,问是否存在一个连通子图,子图由原图删掉一些点和边(不删亦可),且叶子数>=4(即度为1的点)

Input

多组数据,每组数据N,M(0 <= N <= 10000,0 <= M <= 20000)

接下来M行每行给出一条边的两个端点x,y (1 <= x ,y <= N),保证无重边,无自环

Output

对于每组数据,输出YES,如果你能找到这样的子图,否则输出NO

Sample Input

2 1
1 2
5 4
1 2
1 3
1 4
1 5

Sample Output

NO
YES   根据题意,我们可以将点分成3种:①度小于3的点,②度等于3的点,③度大于等于4的点。
  对于①,我们可以直接跳过,因为这种点无论是单个还是组合都无法产生符合要求的子图。对于②,如果有两个度为三的点连载一起并且重合的点小于等于1个的话就有可能产生符合要求的子图。对于③,一个点就可以引出符合要求的子图。
  所以我们可以先判断是否有③的点,如果有就直接输出YES,否则判断所有度为③的点是否有符合要求的,如果有就直接输出YES,否则就不存在题目要求的子图。 上代码:
 #include <cstdio>
#include <cstring>
#define MAX 100002
using namespace std; int c[MAX][],p[MAX],d[MAX],a[MAX],co,n,m; int findset(int u){
return u==p[u] ? u : p[u]=findset(p[u]);
} bool check_(int x,int y){
int ans=;
for(int i=;i<;i++){
if(c[x][i]==y) ans++;
else{
for(int j=;j<;j++){
if(c[x][i]==c[y][j]) ans++;
}
}
}
return ans<=;
} bool check(){
co=;
for(int i=;i<n;i++){
if(d[i]>=) return ;
else if(d[i]==) a[co++]=i;
}
for(int i=;i<co;i++){
for(int j=i+;j<co;j++){
if(findset(a[i])==findset(a[j]) && check_(a[i],a[j])) return ;
}
}
return ;
} int main()
{
int u,v;
//freopen("data.txt","r",stdin);
while(scanf("%d %d",&n,&m)!=EOF){
for(int i=;i<=n;i++) p[i]=i;
memset(d,,sizeof(d));
for(int i=;i<m;i++){
scanf("%d %d",&u,&v);
if(d[u]<) c[u][d[u]]=v;
if(d[v]<) c[v][d[v]]=u;
d[u]++; d[v]++;
u = findset(u);
v = findset(v);
if(u!=v) p[v]=p[u];
}
if(check()) printf("YES\n");
else printf("NO\n");
}
return ;
}

Graphs

最新文章

  1. CryptoJS DES加密
  2. km算法的个人理解
  3. 判断浏览器类型-----------navigator.userAgent.indexOf()
  4. xml技术DTD约束定义
  5. ueditor 添加微软雅黑字体 异常“从客户端中检测到有潜在危险的 request.form值”,解决
  6. Maven实战七
  7. JS可控制的图片自动循环播放查看效果
  8. Django 1.6 基于类的通用视图
  9. 谈谈JavaScript代码混淆
  10. jsp内置对象 的使用范围和类型【说明】
  11. 分布式缓存技术之Redis_Redis集群连接及底层源码分析
  12. Maven 项目 启动时 解决3 字节的 UTF-8 序列的字节 3 无效
  13. 一个实际的案例介绍Spring Boot + Vue 前后端分离
  14. A.Ocean的礼物线段树
  15. HDU6031 Innumerable Ancestors 倍增 - 题意详细概括 - 算法详解
  16. 【Newtonsoft.Json】自己实现JsonConverter ,精简返回的数据结果
  17. python—变量和简单数据类型
  18. Python基础3--Python复杂数据类型
  19. meta viewport的原理
  20. ruby中字符串转换为类

热门文章

  1. 循环遍历Java字符串字符的规范方法——类似python for ch in string
  2. POJ 2728(最优比率生成树+01规划)
  3. 【NOIP2018】 游记
  4. ACM_螺旋填数
  5. xhtml1-strict.dtd
  6. Java中last_insert_id的使用
  7. python--6、常用模块
  8. DeltaFish 校园物资共享平台 第五次小组会议
  9. css+js+html实现的遮罩
  10. Eclipse之调试代码和返回