# include<iostream>
# include<string>
# include<string.h>
# include<queue>
# include<stdio.h>
# include<math.h>
#include <algorithm>
using namespace std;
#define MAX 4005
int first[MAX],next[MAX],u[MAX],v[MAX],used[MAX],h=,in[MAX];
//int out[MAX];
void AddEdge(int a,int b)
{
u[h] = a;
v[h] = b;
if(h%==)
{
in[a]++;
//out[a]++;
in[b]++;
//out[b]++;
}
next[h] = first[u[h]];
first[u[h]] = h;
h++;
}
int judge(int p)
{
int count = ;
int vertex[];
for(int i=;i<=p;i++)
{
if(in[i] % == )
{
if(count>=)
return -;
vertex[count] = i;
count ++;
}
}
if(count==)
{
return ;
}
else if(count == )
{
return -;
}
else if(count == )
{
return vertex[];
}
else
return -;
}
void dfs(int k) //k是出发顶点
{
//printf("%d\n------------------\n",first[k]);
if(first[k]==-) //不存在以k为顶点的边
return;
else
{
k = first[k];
while(k != -)
{
if(used[k]!=)
{
used[k] = ;
if(k%==)
used[k+] = ;
else
{
used[k-] = ;
}
dfs(v[k]);
}
k = next[k];
}
} }
int main()
{
int m,n,i,j;
cin>>n;
while(n--)
{
int p,q;
cin>>p>>q;
h = ;
for(i=;i<MAX;i++)
{
first[i] = -;
next[i] = -;
used[i] = ;
in[i] = ;
//out[i] = 0;
}
for(i=;i<=q;i++)
{
int a,b;
scanf("%d %d",&a,&b);
AddEdge(a,b);
AddEdge(b,a);
} int k,flag = ;
k = judge(p); //k为起点
if(k==-)
{
printf("No\n");
continue;
}
//printf("%d\n------------------\n",k);
dfs(k); //从起点开始寻找是否存在欧拉路 /******
for(i=1;i<=h;i++)
{
k = first[i];
while(k!=-1)
{
printf("%d %d %d %d %d\n",u[k],v[k],used[k],first[k],next[k]);
k = next[k];
}
}
*******/ for(i=;i<h;i++)
{
if(used[i]!=) //有边尚未访问 故不能一笔画
{
//printf("kk");
flag = ;
break;
}
}
if(flag==) printf("Yes\n");
else printf("No\n");
}
return ;
}

NYOJ 一笔画的更多相关文章

  1. Nyoj 一笔画问题(图论)

    描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来. 规定,所有的边都只能画一次,不能重复画.   输入 第一行只有一个正整数N(N&l ...

  2. nyoj 一笔画问题

    一笔画问题 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来. 规定,所有的边都只能画一次,不能重复画.   输入 第一行只有一个正整 ...

  3. NYOJ 一笔画问题 欧拉路

    一笔画问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下 ...

  4. nyoj 42-一笔画问题 (欧拉图 && 并查集)

    42-一笔画问题 内存限制:64MB 时间限制:3000ms Special Judge: No accepted:10 submit:25 题目描述: zyc从小就比较喜欢玩一些小游戏,其中就包括画 ...

  5. NYOJ 42 一笔画问题

    一笔画问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下 ...

  6. NYOJ 42 一笔画问题 (并查集+欧拉回路 )

    题目链接 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来. 规定,所有的边都只能画一次,不能重复画.   输入 第一行只有一个正整数 ...

  7. nyoj 42 一笔画 欧拉通路

    http://acm.nyist.net/JudgeOnline/problem.php?pid=42 一笔画问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 zyc ...

  8. NYOJ 42 一笔画

    一笔画问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下 ...

  9. NYOJ 题目42 一笔画问题

    一笔画问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下 ...

随机推荐

  1. android基础---->XMl数据的解析

    在网络上传输数据时最常用的格式有两种,XML和JSON,下面首先学一下如何解析XML格式的数据,JSON的解析可以参见我的博客(android基础---->JSON数据的解析).解析XML 格式 ...

  2. Go学习笔记(一)安装Go语言环境

    Go Go 是一个开源的编程语言,它能让构造简单.可靠且高效的软件变得容易. Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入 ...

  3. NLP入门资料

    <统计自然语言处理> 一些基础理论概念,涉及统计自然语言处理的基本概念.理论方法和新研究进展,内容包括形式语言与自动机及其在自然语言处理中的应用.语言模型.隐马尔可夫模型.语料库技术.汉语 ...

  4. MVC的ViewData自动给Razor写的input赋值

    问题: 写编辑的时候,突然发现,没有值的model,突然出现了值,而且值是ViewData中值. 后台: this.ViewData["test"] = "测试" ...

  5. python爬虫+使用cookie登录豆瓣

    2017-10-09 19:06:22 版权声明:本文为博主原创文章,未经博主允许不得转载. 前言: 先获得cookie,然后自动登录豆瓣和新浪微博 系统环境: 64位win10系统,同时装pytho ...

  6. ZOJ Problem Set - 2014 Piggy-Bank【完全背包】

    Description Before ACM can do anything, a budget must be prepared and the necessary financial suppor ...

  7. Maven本地库_remote.repositories文件

    本地库中的包都有一个_remote.repositories文件,示例: #NOTE: This is an Aether internal implementation file, its form ...

  8. CH6201 走廊泼水节【最小生成树】

    6201 走廊泼水节 0x60「图论」例题 描述 [简化版题意]给定一棵N个节点的树,要求增加若干条边,把这棵树扩充为完全图,并满足图的唯一最小生成树仍然是这棵树.求增加的边的权值总和最小是多少. 我 ...

  9. Steeltoe之Service Discovery篇

    在前文一窥Spring Cloud Eureka中,已经构建了基于Eureka的服务端与客户端,可用于实现服务注册与发现功能.而借助Steeltoe的类库,可以在.NET生态系统中使用Spring C ...

  10. AD 16 下绘图的几个技巧

    1.绘制封装如果引脚过多怎么办,使用阵列粘贴功能 首先建立一个焊盘,然后选中,使用 ctrl + c 复制,注意复制确认的时候,鼠标一定要点击到焊盘中间. 选择阵列粘贴 条款就是你要复制多少个,增量就 ...