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从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下 ...
随机推荐
- 练习五十七:for循环 809??=800*?+9*?+1其中?代表的两位数,8*?的结果为两位数,9*?的结果为3位数。求?代表的两位数,及809??后的结果
题目:809??=800*?+9*?+1其中?代表的两位数,8*?的结果为两位数,9*?的结果为3位数.求?代表的两位数,及809??后的结果 注意:一定要看清楚题目哦,809??代表的是结果,?代表 ...
- Subarray Sum K
Given an nonnegative integer array, find a subarray where the sum of numbers is k. Your code should ...
- java——异常类、异常捕获、finally、异常抛出、自定义异常
编译错误:由于编写程序不符合程序的语法规定而导致的语法问题. 运行错误:能够顺利的编译通过,但是在程序运行过程中产生的错误. java异常类都是由Throwable类派生而来的,派生出来的两个分支分别 ...
- 用navigator.geolocation.getCurrentPosition在IOS10以上的系统无法定位
昨天老板告诉我代码有Bug(定位失败),于是各种测试最终发现IOS10以上版本手机不能成功(穷,买不起iphone,测试不完全),先贴失败代码: var city =""; nav ...
- C# 判断字符串为空(长度为0),或者是null(没有new)
string str = null; if (string.IsNullOrWhiteSpace(str)) { MessageBox.Show("字符串为null"); } ) ...
- Java基础12-数组求最大值以及排序
1.求最大值 实例:小明买手机,询问了4家店的价格,分别是2800,2900,2600,3000,输出最低价 正确代码:类似打擂台,将数组第一个值赋给最小值,然后依次比较 import java.ut ...
- 使用vue Devtools
第一步: 在谷歌应用商店中查找 vue Devtools 并安装.安装之后,即使我们打开了vue项目发现vue标识是灰色的,说明并没有成功启动vue. 第二步: 默认安装的情况下,找到C:\Users ...
- 用一层for循环初始化三维数组
][][]; ; i < * * ; i++) { a[i / ][(i / ) % ][i % ] = i; printf(, (i / ) % , i % ); // printf(&quo ...
- PHP用mysql数据库存储session
大部分使用php的人一旦应用到session都会使用cookie. cookie虽好可是它也会给我们带来一些隐患的. 隐患一:如果客户端机器的cookie一旦因病毒而失效了,那么session也就相当 ...
- Quartz使用(2) - Quartz核心接口Scheduler、Job
quartz的核心接口如下: 接口 含义 Scheduler scheduler的主要API接口 Job 任务实现接口,期望调度器能够执行 JobDetail 用于定义Job实例 Trigger 调度 ...