2019-02-09-21:55:23

原题链接

题目描述:

  给定一串珠子的颜色对,每颗珠子的两端分别有颜色(用1 - 50 之间的数字表示,对每颗珠子的颜色无特殊要求),若两颗珠子的连接处为同种颜色则可以相连,

当整串珠子都满足两两可以相连时则输出连接序列,否则输出some beads may be lost。

解题思路:

  简单欧拉回路思维,注意判断该图是否可以构成欧拉回路。

算法描述及其实现:

 #include <bits/stdc++.h>
using namespace std; const int maxn = + ;
const int nmax = + ;
int l, r, n, t, kase = ;
int G[maxn][maxn], ans[nmax][], degree[maxn];
bool flag; void euler_circut(int i) {//当搜寻到最后一颗珠子时回溯保存之前所有的珠子。
for(int j = ; j < maxn; j ++)
if(G[i][j]) {
G[i][j] --;
G[j][i] --;
euler_circut(j);
ans[t][] = i + ;
ans[t ++][] = j + ;
}
} int main () {
ios::sync_with_stdio(false);
int T;
cin >> T;
while(T --) {
flag = true;
memset(G, , sizeof(G));
memset(degree, , sizeof(degree));
cin >> n;
for(int i = ; i < n; i ++) {
cin >> l >> r;
G[r - ][l - ] ++;
G[l - ][r - ] ++;
degree[r - ] ++;
degree[l - ] ++;
}
t = ;
for(int i = ; i < maxn; i ++)
if(degree[i] % ) {
flag = false;
break;
}
if(flag)
for(int i = ; i < maxn; i ++)
euler_circut(i);
cout << "Case #" << ++kase << endl;
if(flag)
for(int i = t - ; i >= ; i --)
cout << ans[i][] << ' ' << ans[i][] << endl;
else
cout << "some beads may be lost" << endl;
cout << endl;
}
return ;
}

UVA-10054.The Necklace(欧拉回路)解题报告的更多相关文章

  1. UVA 10054 the necklace 欧拉回路

    有n个珠子,每颗珠子有左右两边两种颜色,颜色有1~50种,问你能不能把这些珠子按照相接的地方颜色相同串成一个环. 可以认为有50个点,用n条边它们相连,问你能不能找出包含所有边的欧拉回路 首先判断是否 ...

  2. UVA 10054 The Necklace(欧拉回路,打印路径)

    题目链接: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  3. uva 10054 The Necklace(欧拉回路)

    The Necklace  My little sister had a beautiful necklace made of colorful beads. Two successive beads ...

  4. UVa 10054 The Necklace(无向图欧拉回路)

    My little sister had a beautiful necklace made of colorful beads. Two successive beads in the neckla ...

  5. 【欧拉回路】UVA - 10054 The Necklace

    题目大意: 一个环被切割成了n个小块,每个小块有头尾两个关键字,表示颜色. 目标是判断给出的n个小块能否重构成环,能则输出一种可行解(按重构次序输出n个色块的头尾颜色).反之输出“some beads ...

  6. uva 10054 The Necklace 拼项链 欧拉回路基础应用

    昨天做了道水题,今天这题是比较水的应用. 给出n个项链的珠子,珠子的两端有两种颜色,项链上相邻的珠子要颜色匹配,判断能不能拼凑成一天项链. 是挺水的,但是一开始我把整个项链看成一个点,然后用dfs去找 ...

  7. UVa 10054 The Necklace【欧拉回路】

    题意:给出n个珠子,珠子颜色分为两半,分别用1到50之间的数字表示, 现在给出n个珠子分别的颜色,问是否能够串成一个环.即为首尾相连,成为一个回路 判断是否构成一个环,即判断是否为欧拉回路,只需要判断 ...

  8. UVa 10054 The Necklace BFS+建模欧拉回路

    算法指南 主要就是建立欧拉回路 #include <stdio.h> #include <string.h> #include <iostream> #includ ...

  9. UVA 10054 The Necklace (无向图的欧拉回路)

    本文链接:http://www.cnblogs.com/Ash-ly/p/5405904.html 题意: 妹妹有一条项链,这条项链由许多珠子串在一起组成,珠子是彩色的,两个连续的珠子的交汇点颜色相同 ...

随机推荐

  1. os sys 模块

    os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录:相当于shell下cd os.chdi ...

  2. Rabbitmq(3) work queues

    轮询分发:每个消费者处理的消息是一样的 公平分发:能者多劳 *****公平分发 生产者 package com.aynu.bootamqp.service; import com.aynu.boota ...

  3. day03-数据类型

    数据类型 一.介绍 存储引擎决定了表的类型,而表内存放的数据也要有不同的类型,每种数据类型都有自己的宽度,但宽度是可选的 mysql常用数据类型概括:#1. 数字: 整型:tinyint.int.bi ...

  4. 2018SDIBT_国庆个人第五场

    A - ACodeForces 1060A Description Let's call a string a phone number if it has length 11 and fits th ...

  5. 查看Linux物理CPU个数

    查看内核版本 lsb_release -a 查看物理CPU个数.核数.逻辑CPU个数 (1)具有相同core id的CPU是同一个core的超线程. (2)具有相同physical id的CPU是同一 ...

  6. LINUX系统一一CentOS6.5之tomcat安装

    一 准备工作建立好文件夹 tomcat文件夹地址  二 下载并解压 当然是下载了 1.centos6.5系统里面下载 解压 2.本机下载 然后利用Xftp复制到目标文件加载解压(我用的是这种,随意啦) ...

  7. Win2012 R2虚拟机自激活(AVMA)技术

    只要你的宿主机是Windows Server 2012 R2 Datacenter且宿主机已经激活, 不管宿主机许可证是VL,OEM还是零售版,只要宿主主机处于激活状,在其上运行的任何R2 VM都将被 ...

  8. swift视图的添加及层次变动和基本动画

    // 一般的我们添加一个视图到父视图都是通过 /* let v1 = UIView(frame:CGRectMake(100,200,30,50)) self.view.addSubview(v1) ...

  9. java的Timer和TimerTask

    java中Timer类使用的方法是如下的: Timer timer = new Timer(); timer.schedule(new TimerTask() { public void run() ...

  10. LinQ to sql简介及增删改查

    Linq to sql 类 LinQ它就是一个集成化的数据库访问类,它会自动生成许多原本需要我们自己创建的东西: 它和ADO.NET是一样的东西,都是为了访问数据库而出现的,EF框架 一.创建LinQ ...