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从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下 ...
随机推荐
- B树与B+
简单剖析B树(B-Tree)与B+树https://blog.csdn.net/z_ryan/article/details/79685072 B树和B+树的插入.删除图文详解https://www. ...
- my19_mysql 多线程备份恢复工具mydumper
mydumper适合库中有大表且CPU个数较多的场景,多用于恢复从库或单个实例 推荐用法**************************** mydumper -u automng -p root ...
- pip安装python库
- python面向对象实例
——王宇阳 总结 (Code_boy)2018年11月16日 class Person: name='xxx' age=20 p=Person() #p为实例对象 print(p.name,p.age ...
- input类型为file改变默认按钮样式
改变 input file 样式(input 文件域)是很多前端朋友经常遇到的头疼问题,今天推荐两种改变 input file 样式的两种常用方法: 方法一: <input type=&quo ...
- input 单选按钮radio 取消选中
//需要先引入JQ.js <input name="rdo" value="AA" type="radio" tag="0& ...
- Murano Weekly Meeting 2015.09.15
Meeting time: 2015.September.15th 1:00~2:00 Chairperson: Serg Melikyan, PTL from Mirantis Meeting s ...
- ORACLE分页SQL
1,使用rownum SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A ) 2,使用between SEL ...
- webpack打包将配置文件单独抽离不压缩打包
webpack.config.js: plugins: [ //提取公共模块 new webpack.optimize.CommonsChunkPlugin({ name: 'vendors', ch ...
- Day1 了解web前端
Day1 了解web前端 一.职业发展路线: 前端页面制作.前端开发.前端架构师 二.1)前端工程师主要职责: 利用HTML/CSS/JavaScript等各种Web技术进行客户端产品的开发.完 ...