现在的位置: 首页 > 综合 > 正文

acm_42一笔画问题

2019年06月13日 ⁄ 综合 ⁄ 共 1236字 ⁄ 字号 评论关闭

一笔画问题

时间限制:3000 ms
  内存限制:65535
KB
难度:4
描述

zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。

规定,所有的边都只能画一次,不能重复画。

 

输入
第一行只有一个正整数N(N<=10)表示测试数据的组数。
每组测试数据的第一行有两个正整数P,Q(P<=1000,Q<=2000),分别表示这个画中有多少个顶点和多少条连线。(点的编号从1到P)

随后的Q行,每行有两个正整数A,B(0

输出
如果存在符合条件的连线,则输出"Yes",
如果不存在符合条件的连线,输出"No"。
样例输入
2
4 3
1 2
1 3
1 4
4 5
1 2
2 3
1 3
1 4
3 4
样例输出
No
Yes
来源

[张云聪]原创
上传者

张云聪

简单的欧拉图的问题,注意要先去判断是否是连通图

package 一笔画;

import java.util.Scanner;

public class DrawAtOnce {

    public
static void main(String[] args) {
         
DrawAtOnce drawAtOnce = new DrawAtOnce();
         
drawAtOnce.solution();
    }

    public void
solution() {
   
    in = new
Scanner(System.in);
   
    int groups =
in.nextInt();
   
    for (int i =
0; i < groups; i++) {
   
   
   
getDate();
   
   
   
if(handle()){
   
   
   
   
System.out.println("Yes");
   
   
    }else{
   
   
   
   
System.out.println("No");
   
   
    }
   
    }
    }
    Scanner
in;
    int
vertexs;
    int
Lines;
    int[]
vertexList;
    int[]
root;
   
    private int
getroot(int i){
   
    if(root[i]
!= i){
   
   
    return
root[i] = root[root[i]];
   
   
   
   
    }else{
   
   
    return
i;
   
    }
    }
   
    private void
getDate(){
   
    vertexs =
in.nextInt();
   
    Lines =
in.nextInt();
   
    vertexList =
new int[vertexs+1];
   
    root = new
int[vertexs+1];
   
    for(int i =1
; i <= vertexs;i++){
   
   
    root[i] =
i;
   
    }
   
    for(int i
0;  i < Lines ;i++){
   
   

抱歉!评论已关闭.