NYOJ(42)欧拉图
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=42
我是参考了红黑联盟的结题报告了的。但是有一个位置,应该是红黑联盟写错了吧,就是那个连通性的定义这里。
欧拉定理:
1、图是连通的,每两个点之间要直接或者间接相连。(这里红黑联盟好像写错了)
2、奇点总和只能是0或2;
这里的dfs写的很巧妙,我就是在这里WA了,dfs(k)时,如果搜到一条边,然而只增加k这个的度,因为之后dfs(i)时,再加上i的度,而且不会访问k这个点。
之后,帆哥教我直接在建图的时候就把每个点的度写好就可以了。方便很多。两份代码都贴上。
#include <stdio.h>
#include <string.h> bool maps[][];
bool vis[];
int degree[]; int n,m; void dfs(int k)
{
vis[k] = true;
for(int i=;i<=n;i++)
{
if(maps[k][i])
{
degree[k]++;
if(!vis[i])
dfs(i);
}
}
} int main()
{
int t;
scanf("%d",&t);
while(t--)
{
memset(vis,false,sizeof(vis));
memset(maps,false,sizeof(maps));
memset(degree,,sizeof(degree)); scanf("%d%d",&n,&m); int x,y;
for(int i=;i<m;i++)
{
scanf("%d%d",&x,&y);
maps[x][y] = maps[y][x] = true;
} dfs(); bool flag = true;
for(int i=;i<=n;i++)
{
if(!vis[i])
{
flag = false;
break;
}
}
if(!flag)
printf("No\n");
else
{
int ans = ;
for(int i=;i<=n;i++)
{
if(degree[i]%)
ans ++;
}
if(ans==||ans==)
printf("Yes\n");
else printf("No\n");
}
}
return ;
}
#include <stdio.h>
#include <string.h> bool maps[][];
bool vis[];
int degree[]; int n,m; void dfs(int k)
{
vis[k] = true;
for(int i=;i<=n;i++)
{
if(maps[k][i])
{
if(!vis[i])
dfs(i);
}
}
} int main()
{
int t;
scanf("%d",&t);
while(t--)
{
memset(vis,false,sizeof(vis));
memset(maps,false,sizeof(maps));
memset(degree,,sizeof(degree)); scanf("%d%d",&n,&m); int x,y;
for(int i=;i<m;i++)
{
scanf("%d%d",&x,&y);
maps[x][y] = maps[y][x] = true;
degree[x]++;
degree[y]++;
} dfs(); bool flag = true;
for(int i=;i<=n;i++)
{
if(!vis[i])
{
flag = false;
break;
}
}
if(!flag)
printf("No\n");
else
{
int ans = ;
for(int i=;i<=n;i++)
{
if(degree[i]%)
ans ++;
}
if(ans==||ans==)
printf("Yes\n");
else printf("No\n");
}
}
return ;
}
NYOJ(42)欧拉图的更多相关文章
- nyoj 42
#include <iostream> #include <stdio.h> #include <cstring> #include <algorithm&g ...
- NYOJ 42 一笔画问题
一笔画问题 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下 ...
- nyoj 42 一笔画问题 欧拉路径
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=42 欧拉回路,欧拉路径水题~ 代码: #include "stdio.h&quo ...
- nyoj 42 一笔画 欧拉通路
http://acm.nyist.net/JudgeOnline/problem.php?pid=42 一笔画问题 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 zyc ...
- NYOJ 42 一笔画问题 (并查集+欧拉回路 )
题目链接 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来. 规定,所有的边都只能画一次,不能重复画. 输入 第一行只有一个正整数 ...
- HDOJ 1878 欧拉回路 nyoj 42一笔画问题
#include<cstdio> #include<cstring> ]; int find(int x) { if(visited[x]!=x) return find(vi ...
- NYOJ 42 一笔画
一笔画问题 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下 ...
- nyoj 42判断欧拉路径模板题
#include<stdio.h> #include<string.h> #define N 2100 int degree[N]; int pre[N];//很长时间没写欧拉 ...
- nyoj-----42一笔画问题
一笔画问题 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下 ...
随机推荐
- 微软原版SQL Helper
代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-- ...
- java thread start到run:C++源码分析
转:https://hunterzhao.io/post/2018/06/11/hotspot-explore-inside-java-thread-run/ 整体流程 java new Thread ...
- idea(3)-jetty配置
1.jetty&jdk版本 9.3----->1.8 9.2----->1.7 8------->1.6 2.pom.xml <plugin> <group ...
- WindowsMTU修改
MTU是英文Maximum Transmission Unit的缩写,意为"最大传输单位".也就是通过TCP/IP协议所传输的数据包最大有多少字节,对于网速有极大的影响, MTU并 ...
- github 0 学习
Github 快速上手实战教程 一.实验介绍 1.1 实验内容 本次课程讲的是在实验楼的在线环境中,如何使用 Github 去管理在在线环境中使用的代码.配置.资源等实验相关文件,怎样去添加.同步和下 ...
- Mybatis学习笔记4 - 获取自增主键的值
获取自增主键的值:mysql支持自增主键,自增主键值的获取,mybatis也是利用statement.getGenreatedKeys():useGeneratedKeys="true&qu ...
- poi 详细demo
import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IO ...
- UGUI [TextArea]
- (转)AIX修改系统时区的3种方法和AIX 时间问题(夏令时)
原文:http://blog.csdn.net/fuwencaho/article/details/28267283 http://www.wo81.com/tec/os/aix/2014-04-30 ...
- pat06-图5. 旅游规划(25)
06-图5. 旅游规划(25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该 ...